Advertisement

AcWing 3302 表达式求值 (栈)

阅读量:

原题链接:https://www.acwing.com/problem/content/3305/
解题思路:构建用于计算中缀表达式的树状结构,其中叶子节点代表具体的数值,而非叶子节点则对应运算符号。将运算符号与数值分别存入两个独立的栈结构中,并依照特定顺序进行运算处理。unordered_map作为一种内部采用哈希机制实现的无序容器,可用于设定不同运算符之间的优先级关系。

复制代码
    #include<iostream>
    #include<unordered_map>
    #include<cstring>
    #include<stack>
    
    using namespace std;
    
    stack<int>num;
    stack<char>op;
    
    void eval(){
    	int b = num.top(); num.pop(); 
    	int a = num.top(); num.pop();
    	char q = op.top(); op.pop();
    	//取出栈内储存的两个实数和一个字符进行运算 
    	int x;
    	if(q == '+'){
    		x = a + b;
    	}
    	else if(q == '*'){

全部评论 (0)

还没有任何评论哟~