习题9.43

来源:互联网 发布:java游戏开发技术 编辑:程序博客网 时间:2024/04/30 21:27
Exercise 9.43:

Use a stack to process parenthesized expressions. When you see an open parenthesis, note that it was seen. When you see a close parenthesis after an open parenthesis,pop elements down to and including the open parenthesis off the stack.push a value onto the stack to indicate that a parenthesized expression was replaced.

使用 stack 对象处理带圆括号的表达式。遇到左圆括号时,将其标记下来。然后在遇到右加括号时,弹出 stack 对象中这两边括号之间的相关元素(包括左圆括号)。接着在 stack 对象中压入一个值,用以表明这个用一对圆括号括起来的表达式已经被替换。

#include<iostream>#include<stack>#include<string>using namespace std;int main(){    string inPut;stack<char> sinPut;cout <<"input string, Ctrl+z to end" <<endl;cin >>inPut;string ::iterator iter = inPut.begin();while(iter != inPut.end()){if(*iter != ')'){sinPut.push(*iter);}else{while(sinPut.top() != '('){sinPut.pop();if(sinPut.empty()){cout <<"wrong parameter input" <<endl;goto Pause;}}sinPut.pop();sinPut.push('@');}++iter;}while(!sinPut.empty()){cout <<sinPut.top();sinPut.pop();}cout <<endl;Pause :system("pause");  return 0;}

原创粉丝点击