我正在构建一个函数,以从用户获取中缀表达式并返回其值。输入将是后缀。
请找到我在代码中出现的错误,因为当我尝试插入数字和运算符时,它不起作用。我试图输入1 + 2,但是什么也没出现。 PS:我尚未进行评估。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct
{
int items[100],top;
} stack;
void initialize (stack*s)
{
s->top=0;
}
int pop (stack*s)
{
int out =s->items[s->top];
s->top--;
return out;
}
int push(stack*s,int x)
{
s->top++;
s->items[s->top]=x;
}
int top(stack*s)
{
return s->items[s->top=-1];
}
int isEmpty(stack*s)
{
if(s->top==0)
return 1;
else
return 0;
}
void infixToPostfix (char *infix,char *postfix)
{
stack s;
int ch;
while(isEmpty(&s)==0)
{
if( ch >0&& ch <=9)
printf("%c", ch );
else
switch( ch )
{
case'(':
push(&s,ch);
case'+':
push(&s,ch);
case'-':
push(&s,ch);
case'*':
push(&s,ch);
case'/':
push(&s,ch);
case')':
pop(&s);
}
}
}
int main()
{
char Iexp[256]="",Pexp[256]="";
printf("Enter the expression");
scanf("%s",&Iexp);
infixToPostfix(Iexp,Pexp);
printf("Postfix : %s\n",Pexp);
return 0;
}