中缀表达式转后缀表达式

来源:互联网 发布:充电宝推荐 知乎 快充 编辑:程序博客网 时间:2024/05/16 09:27

很简单的中缀表达式转后缀表达式。


string change_exp(string exp){    map<char, int> order;    order['+'] = 0;    order['-'] = 0;    order['*'] = 1;    order['/'] = 1;    order['('] = 2;    order[')'] = 2;    string re = "";    stack<char> symbol;    for(int i = 0; i < exp.size(); i++)    {        if(exp[i] == ' ' || exp[i] == '\t')            continue;        if(order.find(exp[i]) == order.end())        {            re += exp[i];        }        else if(exp[i] == ')')        {            char tmp;            while(true)            {                tmp = symbol.top();                if(tmp == '(')                    break;                re += tmp;                symbol.pop();            }            symbol.pop();        }        else        {            char tmp;            while(true)            {                if(symbol.empty())                    break;                tmp = symbol.top();                if(tmp == '(')                    break;                if(order[tmp] < order[exp[i]])                    break;                else                {                    re += tmp;                    symbol.pop();                }            }            symbol.push(exp[i]);        }    }    while(!symbol.empty())    {        re += symbol.top();        symbol.pop();    }    return re;}

0 0
原创粉丝点击