数据结构实验之栈二:一般算术表达式转换成后缀式
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
输入
输入一个算术表达式,以‘#’字符作为结束标志。
输出
输出该表达式转换所得到的后缀式。
示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
#include <iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<malloc.h> #include<stack> using namespace std; int main() { char str[1001]; stack<char>s; cin>>str; for(int i=0; str[i]!='#'; i++) { if(str[i]>='a'&&str[i]<='z') cout<<str[i]; else if(str[i]=='(') s.push(str[i]); else if(str[i]==')') { while(s.top()!='(') { cout<<s.top(); s.pop(); } s.pop(); } else if(str[i]=='+'||str[i]=='-') { while(!s.empty()&&s.top()!='(') { cout<<s.top(); s.pop(); } s.push(str[i]); } else if(str[i]=='*'||str[i]=='/') { while(!s.empty()&&(s.top()=='*'||s.top()=='/')) { cout<<s.top(); s.pop(); } s.push(str[i]); } } while(!s.empty()) { cout<<s.top(); s.pop(); } cout<<"\n"; }