일단 팝과 푸시 소스입니다.
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언어로 작업중입니다.
푸하하
pop할때마다 for문의 s.top도 변하는거 아녀?
앗... 감사합니다.. 일단 한건은 해결했네요..