标签:href img src 出栈 0ms ima com time str
本题考的主要为对队列的理解与应用
#include <bits/stdc++.h> using namespace std; stack<char>st2,st1; int main() { int i,len; char s[100]; cin>>s; while(!st1.empty())st1.pop(); while(!st2.empty())st2.pop(); len=strlen(s); /* 前缀是从后向前遍历,若为字母则进入一个储存的数组里(这里用了栈st1); 否则,若为‘)’则进栈st2,若为‘(’则将‘)’前面的元素进入st1,
若为其它的运算符时,
如果当前运算符优先级大于等于st2的栈顶元素则进入st2,否则进入st1; */ for(i=len-2; i>=0; i--) { if(s[i]<=‘z‘&&s[i]>=‘a‘)st1.push(s[i]); else if(st2.empty())st2.push(s[i]); else if(s[i]==‘*‘||s[i]==‘/‘)st2.push(s[i]);//乘除号大于等于其它运算符 else if(s[i]==‘+‘||s[i]==‘-‘) { if(st2.top()==‘)‘)st2.push(s[i]); else if(st2.top()==‘*‘||st2.top()==‘/‘) { st1.push(st2.top()); st2.pop(); st2.push(s[i]); } else if(st2.top()==‘+‘||st2.top()==‘-‘)st2.push(s[i]); } else if(s[i]==‘)‘)st2.push(s[i]); else if(s[i]==‘(‘) { while(!st2.empty()&&st2.top()!=‘)‘) { st1.push(st2.top()); st2.pop(); } if(!st2.empty()&&st2.top()==‘)‘)st2.pop(); } } while(!st2.empty()) { if(st2.top()!=‘)‘&&st2.top()!=‘(‘) st1.push(st2.top()); st2.pop(); } while(!st1.empty()) { cout<<st1.top(); st1.pop(); } cout<<endl; /* 中序遍历把括号去掉即可 */ for(i=0; s[i]!=‘#‘; i++) { if(s[i]!=‘(‘&&s[i]!=‘)‘) cout<<s[i]; } cout<<endl; /* 后续遍历为若是字母则输出,当为运算符或括号时: 若栈st2空或左括号时进栈,当不为空时, 若当前运算符优先级大于栈顶元素就进栈; 否则将栈顶元素出栈,并把当前元素入栈, 最后输出栈内剩余元素 */ while(!st2.empty())st2.pop(); for(i=0; s[i]!=‘#‘; i++) { if(s[i]<=‘z‘&&s[i]>=‘a‘)cout<<s[i]; else if(st2.empty())st2.push(s[i]); else if(s[i]==‘*‘||s[i]==‘/‘) { if(st2.top()==‘*‘||st2.top()==‘/‘) cout<<s[i]; else st2.push(s[i]); } else if(s[i]==‘+‘||s[i]==‘-‘) { if(st2.top()==‘(‘)st2.push(s[i]); else { cout<<st2.top(); st2.pop(); st2.push(s[i]); } } else if(s[i]==‘(‘)st2.push(s[i]); else if(s[i]==‘)‘) { while(!st2.empty()&&st2.top()!=‘(‘) { cout<<st2.top(); st2.pop(); } if(!st2.empty()&&st2.top()==‘(‘)st2.pop(); } } while(!st2.empty()) { cout<<st2.top(); st2.pop(); } cout<<endl; return 0; } /*************************************************** Result: Accepted Take time: 0ms Take Memory: 192KB Submit time: 2018-08-15 ****************************************************/
标签:href img src 出栈 0ms ima com time str
原文地址:https://www.cnblogs.com/xqmmd/p/9484142.html