1. 括号的匹配
- #include<iostream>
- #include<stack>
- using namespace std;
- int check(string str){
- stack<char> s;
- int len=str.length();
- for(int i=0;i<len;i++){
- char a=str[i];
- switch(a){
- case '(':
- case '[':
- case '{':
- s.push(a);// 若是左括号, 则进行入栈操作
- break;
- // 若是右括号, 则进行出栈操作, 若出栈元素不是与输入相对应的左括号, 则字符串括号中不匹配, 返回
- case ')':
- if(s.top()!='(')
- return 0;
- s.pop();
- break;
- case '}':
- if(s.top()!='{')
- return 0;
- s.pop();
- break;
- case ']':
- if(s.top()!=']')
- return 0;
- s.pop();
- break;
- }
- }
- int re=0;// 定义并初始化判断函数的返回值
- re=s.empty();// 返回盘空函数的返回值
- if(re)
- return 1;// 栈为空
- else
- return 0;// 栈不为空, 有左括号, 即存在'('或'['或'{'未匹配
- }
- int main() // 主函数
- {
- string str; // 定义一个单字符数组以存储键盘输入的字符串.
- cout<<"请您输入一个长度小于 100 的字符串:"<<endl;
- while(cin>>str){ // 从键盘输入字符存储到字符数组中, 有输入则继续.
- int re=check(str);
- if(re==1)
- cout<<"您输入的字符串中的括号完全匹配!"<<endl;
- else if(re==0)
- cout<<"您输入的字符串中的括号不匹配!"<<endl;}
- }
- View Code
堆栈的应用
来源: http://www.bubuko.com/infodetail-2946011.html