标签:
#include<iostream> #include<stack> #include<string> #include<deque> using namespace std; char compare(char tp, char op) { if (((tp == ‘+‘ || tp == ‘-‘) && (op == ‘*‘ || op == ‘/‘)) || tp == ‘#‘) return ‘<‘; return ‘>‘; } int main() { stack<char>num; stack<char>oper; oper.push(‘#‘); string s; cin >> s; for (int i = 0; i<s.length(); i++) { if (s[i] == ‘0‘ || s[i] == ‘1‘ || s[i] == ‘2‘ || s[i] == ‘3‘ || s[i] == ‘4‘ || s[i] == ‘5‘ || s[i] == ‘6‘ || s[i] == ‘7‘ || s[i] == ‘8‘ || s[i] == ‘9‘) num.push(s[i]); else { char comp = compare(oper.top(), s[i]); if (comp == ‘<‘) oper.push(s[i]); else if (comp == ‘>‘) { num.push(oper.top()); oper.pop(); oper.push(s[i]); } } } while (oper.top() != ‘#‘) { num.push(oper.top()); oper.pop(); } deque<char> d; while (num.size() != 0) { d.push_front(num.top()); num.pop(); } for (auto i = d.begin(); i != d.end(); i++) cout << *i; cout << endl; return 0; }
Infix to postfix without '(' and ')'
标签:
原文地址:http://www.cnblogs.com/KennyRom/p/5980056.html