本文主要是介绍实验3-栈和队列——表达式求值(2132),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数据结构实验之栈与队列二:一般算术表达式转换成后缀式
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Example Input
a*b+(c-d/e)*f#
Example Output
ab*cde/-f*+
代码:
#include<iostream>
#include<stack>
using namespace std;
stack<char> s;int compare(char a,char b)
{if(b=='@')return 0;if( (a=='*'||a=='/')&&(b=='+'||b=='-') || (b=='(') )return 1;elsereturn -1;
}int main()
{char c;s.push('@');while(cin>>c&&c!='#'){if(c>='a'&&c<='z')cout<<c;else if(c=='('){s.push('(');}else if(c==')'){while(s.top()!='('){cout<<s.top();s.pop();}s.pop();}else{if(compare(c,s.top())==1)s.push(c);else if(compare(c,s.top())==-1){cout<<s.top();s.pop();s.push(c);}else{s.pop();s.push(c);}}}while(!s.empty()){cout<<s.top();s.pop();}return 0;
}
这篇关于实验3-栈和队列——表达式求值(2132)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!