使用C语言堆栈进行后缀转换的中缀

时间:2019-03-18 22:50:05

标签: c stack infix-notation

我正在构建一个函数,以从用户获取中缀表达式并返回其值。输入将是后缀。

请找到我在代码中出现的错误,因为当我尝试插入数字和运算符时,它不起作用。我试图输入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;

}

0 个答案:

没有答案