일단 팝과 푸시 소스입니다.

int isEmpty(struct stack* s) {

if (s->top < 0 ) return 1;

else return 0;

}


void Push(char op) {

s.OP[s.top++] = op;

}


void optPush(char opt) {

s.Operator[s.Opt_top++] = opt;

}


void opdPush(char opd) {

s.Operand[s.Opd_top++] = opd;

}


char Pop() {

return s.OP[--s.top];

}


char optPop() {

return s.Operator[--s.Opt_top];

}


char opdPop() {

return s.Operand[--s.Opd_top];

}


스택을 이용해서 중위표기법을 후위표기법으로 변환하였고 이걸 계산하려하는데


for (int i = 0; i <= s.top; i++) {

opdPush(Pop());

}

를 이용하여 토큰을 옮기는데 OP에서 pop한것들이 옮겨가는형태가아니라 복사되는 형태로 가졌습니다...

pop으로 옮긴후 opd에도 값이 있고 OP에도 값이 있는형태로..


그리고 OP에 사용되는 top이 4에서 고정된채로있습니다.


후위로 변환할땐

opt -> OP 로 가는형식으로 썼는데 push로 잘 삭제됬었는데


계산할떄

OP -> opd로 opd-> OP로 가려니까 문제가 생기네요..

이것만으로 지금 몇시간째 끙끙거리고있습니다.


POP과 PUSh 코드에 뭔가 오류가 있나요..?


c언어로 작업중입니다.