C++利用链栈实现表达式求值

C++利用链栈实现表达式求值,第1张

概述C++利用链栈实现表达式求值

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

 #include<iostream.h>typedef int Status;typedef char Cstack;#define OK 1#define ERROR 0  typedef struct StackNode{    Cstack data;    struct StackNode *next;}StackNode,*linkStack;  Status InitStack(linkStack &S){    S=NulL;    return OK;}Status Push(linkStack &S,Cstack e){    StackNode *p;    p=new StackNode;    p->data=e;    p->next=S;    S=p;    return OK;}Status Pop(linkStack &S,Cstack &e){    StackNode *p;    if(S==NulL) return ERROR;    e=S->data;    p=S;    S=S->next;    delete p;    return OK;}Cstack Gettop(linkStack S){    if(S!=NulL)    return S->data;}Status In(Cstack ch){    cin>>ch;    if(ch=='+')        return OK;    else if(ch=='-')        return OK;    else if(ch=='*')        return OK;    else if(ch=='/')        return OK;    else if(ch=='#')        return OK;    else        return ERROR;}Cstack Precede(Cstack t1,Cstack t2){    switch(t1)    {    case '+':        switch(t2)        {        case '+':return '>';break;        case '-':return '>';break;        case '*':return '<';break;        case '/':return '<';break;        case '(':return '<';break;        case ')':return '>';break;        case '#':return '>';break;        }        break;        case '-':            switch(t2)        {        case '+':return '>';break;        case '-':return '>';break;        case '*':return '<';break;        case '/':return '<';break;        case '(':return '<';break;        case ')':return '>';break;        case '#':return '>';break;        }        break;        case '*':            switch(t2)        {        case '+':return '>';break;        case '-':return '>';break;        case '*':return '>';break;        case '/':return '>';break;        case '(':return '<';break;        case ')':return '>';break;        case '#':return '>';break;        }        break;        case '/':            switch(t2)        {        case '+':return '>';break;        case '-':return '>';break;        case '*':return '>';break;        case '/':return '>';break;        case '(':return '<';break;        case ')':return '>';break;        case '#':return '>';break;        }        break;        case '(':            switch(t2)        {        case '+':return '<';break;        case '-':return '<';break;        case '*':return '<';break;        case '/':return '<';break;        case '(':return '<';break;        case ')':return '=';break;        case '#':return '>';break;        }        break;        case ')':            switch(t2)        {        case '+':return '>';break;        case '-':return '>';break;        case '*':return '>';break;        case '/':return '>';break;        case '(':return '=';break;        case ')':return '>';break;        case '#':return '>';break;        }        break;        case '#':            return '=';        break;    }}Cstack Operator(Cstack t1,Cstack t2,Cstack t3){    t1=t1-48;    t3=t3=48;    int c;    switch(t2)    {    case '+':        c=t1+t2+48;        return c;        break;    case '-':        c=t1-t2+48;        return c;        break;    case '*':        c=t1*t2+48;        return c;        break;    case '/':        c=t1/t2+48;        return c;        break;    }}   voID main(){    linkStack OPTR,OPAN;    Cstack cha1,cha2,x,cha,thea;    InitStack(OPTR);    InitStack(OPAN);    Push(OPTR,'#');    cout<<"输入表达式的中间值及最终结果局限于0~9之间的个位数并以#号结束"<<endl;    while(cha!='#'||Gettop(OPTR)!='#')    {        cin>>cha;        if(!In(cha))            Push(OPAN,cha);        else            switch(Precede(Gettop(OPTR),cha))            {            case '<':                Push(OPTR,cha);                cin>>cha;                    break;            case '>':                Pop(OPTR,thea);                Pop(OPAN,cha1);                Pop(OPAN,cha2);                Push(OPAN,(cha1,thea,cha2));                    break;            case '=':                Pop(OPTR,x);                break;            }    }    cout<<Gettop(OPAN)<<endl;    return;}

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的C++利用链栈实现表达式求值全部内容,希望文章能够帮你解决C++利用链栈实现表达式求值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1231854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存