Преобразование инфикса в постфикс
при отладке : стек оценщика успешно зарезервирован в памяти
но ценности вовсе не толкутся! не знаете, что случилось ? почему значения не помещаются в стек ? зная, что я использовал свою реализацию стека в другой программе, и она хорошо работала !!
Что я уже пробовал:
void infixTopostfix(char infix[], char postfix[]){ int i,j=0; Stack* evaluator = initialize(); for(i=0; infix[i] ; ++i){ if(isdigit(infix[i])) { postfix[j++] = infix[i];} else { while(!isempty(evaluator) && precedence(infix[i]) <= precedence((char)top(evaluator))) {postfix[j++] = pop(evaluator);} push(evaluator,(int)infix[i]); } } postfix[j++] = '\0'; printf("%s",postfix); }
моя реализация стека
#include<stdlib.h> #include<stdio.h> #define SIZE 100 typedef struct { int top; int *items; } Stack; Stack* initialize() { Stack *s=malloc(sizeof(Stack)); s->top=0; s->items=(int*) malloc(SIZE*sizeof(int)); return s; } int isfull(Stack *s) { return s->top >= SIZE ?1:0 ; } int isempty(Stack *s) { return s->top==0?1:0; } void push(Stack *s,int value) { if(!isfull(s)) s->items[s->top++]=value; else printf("stack is full"); } int pop(Stack *s) { if(!isempty(s)) return s->items[--s->top]; else printf("stack is empty"); return 404; } int top(Stack* s){ if(isempty(s)) return 0; return (s->items[s->top]); }