栈的应用:括号匹配
2015-03-10 22:08
225 查看
问题:判断算术表达式的括号是否匹配,例如:2+{(5-1)*4-[3-5]*3}匹配,2+{(5-1)*4-3-5]*3}不匹配。
思路:出现右括号需与离其最近的左括号进行匹配。遇到左括号进栈,遇到右括号,若栈不为空,栈顶元素出栈,并判断其是否与对应的左括号一致。
代码:
思路:出现右括号需与离其最近的左括号进行匹配。遇到左括号进栈,遇到右括号,若栈不为空,栈顶元素出栈,并判断其是否与对应的左括号一致。
代码:
#include<iostream> #include<stack> #include<string> using namespace std; bool isMatch(string str) { stack<char> bracket; int len=str.length(); for(int i=0;i<len;i++) { switch(str[i]){ case '(': case '[': case '{': bracket.push(str[i]); break; case ')': if(!bracket.empty()&&bracket.top()=='(') { bracket.pop(); } else return false; break; case ']': if(!bracket.empty()&&bracket.top()=='[') { bracket.pop(); } else return false; break; case '}': if(!bracket.empty()&&bracket.top()=='{') { bracket.pop(); } else return false; break; } } return bracket.empty(); } int main() { string str; cout<<"Please input the char: "<<endl; getline(cin,str); cout<<str<<endl; if(isMatch(str)) cout<<"This is match!"<<endl; else cout<<"This is not match!"<<endl; return 0; }
相关文章推荐
- 栈应用--括号匹配检测
- (学习笔记)C++括号匹配----栈的应用
- 3.2栈的应用举例----数制转换、括号匹配及行编辑
- 栈的应用之括号匹配
- 括号匹配——栈的基础应用1
- 栈和队列应用之括号匹配
- 数据结构之 栈的应用 括号匹配
- 堆栈应用括号匹配实验
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- COJ 1065括号匹配:栈的简单应用
- 栈的简单应用(数制转换、括号匹配检验、行编辑、迷宫求解)
- 栈应用--括号匹配的检验
- 数据结构之SeqStack---堆栈应用---括号匹配问题
- 栈的应用2:检查括号匹配
- 栈的应用——括号匹配的检验(C语言)
- 栈的应用之括号匹配
- 数据结构的应用——使用栈实现字符串括号匹配检查
- 数据结构栈的应用之括号匹配
- 堆栈数据结构应用之括号匹配检查(算法3.2.2)
- 数据结构之 栈的应用 括号匹配