SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式

来源:互联网 发布:淘宝整机哪里买 编辑:程序博客网 时间:2024/06/03 19:09
<pre name="code" class="cpp">#include<bits/stdc++.h>using namespace std;void transf(char mid[],char suf[]){    int is=0,im;    stack<char>s;    for(im=0;mid[im]!='#';im++)    {        if(mid[im]>='a'&&mid[im]<='z')        {            suf[is]=mid[im];            is++;        }        else if(mid[im]=='+'||mid[im]=='-')        {            while(!s.empty()&&s.top()!='(')            {                suf[is]=s.top();                is++;                s.pop();            }            s.push(mid[im]);        }        else if(mid[im]=='*'||mid[im]=='/')        {            while(!s.empty()&&(s.top()=='*'||s.top()=='/'))            {                suf[is]=s.top();                is++;                s.pop();            }            s.push(mid[im]);        }        else if(mid[im]=='(')        {            s.push(mid[im]);        }        else if(mid[im]==')')        {            while(s.top()!='(')            {                suf[is]=s.top();                is++;                s.pop();            }            s.pop();        }    }    while(!s.empty())    {        suf[is]=s.top();        is++;        s.pop();    }    suf[is]='\0';}int main(){    char mid[100],suf[100];    scanf("%s",mid);    transf(mid,suf);    for(int i=0;suf[i]!='\0';i++)        printf("%c",suf[i]);    return 0;}


                                             
0 0