栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

栈中缀转后缀,计算表达式结果

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

栈中缀转后缀,计算表达式结果

#include

// 中缀转后缀

using namespace std;

void duqu(vector&a,vector&b,char x){

    if(x-'0'>=0&&x-'0'<=9){ b.push_back(x); return;}

    else{

        if(a.empty()){ a.push_back(x); return;}

        else if(x=='('||a.back()=='('){ a.push_back(x); return;}

        else if(x=='*'||x=='/'&&(a.back()=='+'||a.back()=='-')){a.push_back(x); return; }

        else if((x=='*'||x=='/')&&(a.back()=='*'||a.back()=='/')){ //同级

            while(!(a.back()!='*'&&a.back()!='/')){

                b.push_back(a.back());a.pop_back();

            }

            a.push_back(x); return;

        }

        else if((x=='+'||x=='-')&&(a.back()=='+'||a.back()=='-'||a.back()=='*'||a.back()=='/')){

            while(a.back()!='('&&!a.empty()){

                b.push_back(a.back());a.pop_back();

            }

            a.push_back(x); return;

        }

        else if(x==')'){

            while(a.back()!='('){

                b.push_back(a.back());a.pop_back();

            }

            a.pop_back(); return;//pop '(';

        }

    }

}

int getres(vector&b,vector&res){

    for(auto i=b.begin();i

        if(*i-'0'>=0&&*i-'0'<=9){ res.push_back(*i-'0');}

        if(*i=='+'){int temp=*(res.end()-1)+*(res.end()-2); res.erase(res.end()-2,res.end());res.push_back(temp);}

        if(*i=='-'){int temp= *(res.end()-1)- *(res.end()-2);res.erase(res.end()-2,res.end());res.push_back(temp);}

        if(*i=='*'){int temp= *(res.end()-2)*(*(res.end()-1));res.erase(res.end()-2,res.end());res.push_back(temp);}

        if(*i=='/'){int temp =*(res.end()-2)/(*(res.end()-1));res.erase(res.end()-2,res.end());res.push_back(temp);}

    }

    return res.back();

}

int main(){

    string str;

    cout<<"输入表达式:n";

    while(cin>>str){

        vectora,b;

        vectorc;

        for(int i=0;i

            duqu(a,b,str[i]);

        }

        while(!a.empty()){

            b.push_back(a.back());a.pop_back();

        }

        for(auto i=b.begin();i< b.end();i++){

            cout<<*i<<" ";

        }

        cout<

        cout<

    }

    return 0;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号