数据结构栈问题求助

来源:互联网 发布:大数据风控模型 编辑:程序博客网 时间:2024/05/22 17:49
#include "stdio.h"#define DT char#define M 100typedef struct{        DT data[M];        int top;}SEQSTACK;SEQSTACK INI(){        SEQSTACK S;        S.top=0;        return(S);}SEQSTACK PUS(SEQSTACK S,DT x){        if(S.top==M-1)                printf("栈满\n");        else                S.top++;        S.data[S.top]=x;        return (S);}SEQSTACK POP(SEQSTACK S){        if(S.top==0)                printf(" 空栈\n");    else        S.top--;        return (S);}char GET(SEQSTACK S){        if(S.top==0)        {        printf("空栈\n");                return '\0';        }        else          return (S.data[S.top]);}char pre(char c){        switch(c){        case '#':                c=0;break;        case '+':        case '-':                c=1;break;        case '*' :        case '/':                c=2;break;        }                return c;}int com(int x,int y,DT z){        int rs;        switch(z){        case'-':                rs=x-y;break;        case'+':                rs=x+y;break;        case'*':                rs=x*y;break;        case'/':                rs=x/y;break;        }        return rs;}int exp(DT q[20]){        SEQSTACK NDS,OPS;        char x,y,z;        int result=0,i=0;        NDS=INI();        OPS=INI();        OPS=PUS(OPS,'#');        for(i=0;q[i]!='#';i++){                if(q[i]<='9'&&q[i]>='0'){                        NDS=PUS(NDS,q[i]-48);                }                else if(pre(q[i]<=pre(GET(OPS)))){                        y=GET(NDS);                        NDS=POP(NDS);                        x=GET(NDS);                        NDS=POP(NDS);                        z=GET(OPS);                        OPS=POP(OPS);                        NDS=PUS(NDS,com(x,y,z));                        OPS=PUS(OPS,q[i]);                }                else                        OPS=PUS(OPS,q[i]);                }while(GET(OPS)!='#'){                   y=GET(NDS);                        NDS=POP(NDS);                        x=GET(NDS);                        NDS=POP(NDS);                        z=GET(OPS);                        OPS=POP(OPS);                        NDS=PUS(NDS,com(x,y,z));        }        result=GET(NDS);        return (result);}        main()        {                char q[20];                int result;                printf("输入运算表达式\n");                gets(q);                result=exp(q);                printf("%d",result);        }
这个程序无法识别用户输入两位数值的预算。求助改动
0 0
原创粉丝点击