四则运算主要分为两个部分:
- 中缀转后缀
规则为:先遍历中缀表达式的每一个字符,如果是数字直接输出到后缀表达式,如果是符号,需要判断与栈顶符号的优先级,是右括号或者优先级高于栈顶符号(乘除优先于加减)则依次输出出栈并输出,然后将当前符号压入栈。这里把符号分为几类:①’(’,入栈;
②’)’,栈顶符号依次出栈并输出直到栈顶元素为’(’,然后将当前符号入栈;
③’+’or’-‘,栈顶符号依次出栈直到栈为空或者栈顶元为’(’,然后把当前符号压入栈。
④’’ or ‘/’, 为栈顶符号为’‘或’/’的元素依次出栈,直到遇到其他符号或者栈为空,然后把当前符号压栈。
最后将栈中剩余分符号输出。
string BackToMid(string s)
{
string ret;
stack<int> stk;
for(string::size_type i = 0; i< s.size(); i++)
{
if( isdigit(s[i]) )
{
ret += s[i];
if( (i < s.size() -1 && !isdigit(s[i+1</