zoukankan      html  css  js  c++  java
  • infix to postfix 完整版

    #include<iostream>
    #include<stack>
    #include<string>
    #include<deque>
    using namespace std;
    
    char compare(char tp, char op)
    {
    	if (((tp == '+' || tp == '-') && (op == '*' || op == '/')) || (tp == '#'))
    		return '<';
    	else if (tp == '('&&op != ')')
    		return '<';
    	else if ((tp == '*' || tp == '/' || tp == '+' || tp == '-') && (op == '('))
    		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 == '>')
    			{
    				if (s[i] == ')')
    				{
    					while (oper.top() != '(')
    					{
    						num.push(oper.top());
    						oper.pop();
    					}
    					oper.pop();
    				}
    				else
    				{
    					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;
    }
    

      

  • 相关阅读:
    第四周助教小结 北软
    第二周工作小结 北软
    第六周助教小结 北软
    第七周周小结 北软
    第八周周小结 北软
    几句话了解元数据(Metadata)
    App测试点(二)
    Pytest单元测试
    UnitTest单元测试
    【模板】单源最短路径
  • 原文地址:https://www.cnblogs.com/KennyRom/p/5980355.html
Copyright © 2011-2022 走看看