行编辑程序、括号匹配检验程序都是利用的栈的数据结构。而这两个
小程序也非常好的显示了栈先进后出的思想。由于程序本身很简短、清晰,所
以也就不做多的解释了,直接上代码了。
行编辑程序:
#include<iostream> #include<stack> using namespace std; int main() { stack<char> sta; char ch = getchar(); while(ch!=EOF) { while(ch!=EOF&&ch!=‘\n‘) { switch (ch) { case‘#‘://出栈 sta.pop(); break; case ‘@‘://清空栈 while (!sta.empty()) { sta.pop(); } break; default://入栈 sta.push(ch); break; } ch = getchar(); } while (!sta.empty()) { cout<<sta.top(); sta.pop(); } cout<<endl; if (ch!=EOF) { ch = getchar(); } } return 0; }括号匹配检验程序:
#include<iostream> #include<stack> #include<string> using namespace std; #define aa ‘(‘ bool fun() { string ss; cin>>ss; stack<char> sta; //左括号枚举类型 char LBracket[] = {‘(‘,‘{‘, ‘[‘,‘<‘}; //右括号枚举类型 char RBracket[] = {‘)‘, ‘}‘,‘]‘, ‘>‘}; string::iterator iter = ss.begin(); for(;iter!=ss.end();iter++) { if(find(LBracket,LBracket+4,(*iter)))//左括号则入栈 { sta.push((*iter)); continue; } if(find(RBracket,RBracket+4,(*iter)))//右括号则出栈 { if(sta.top() == (*iter)) { sta.pop(); continue; } else { return false; } } return false; } return true; } int main() { if(fun()) { cout<<"匹配!"<<endl; } else { cout<<"不匹配!"<<endl; } }
原文:http://blog.csdn.net/yyc1023/article/details/24958089