判括号匹配(顺序栈)
来源:互联网 发布:js中怎么给图片设边框 编辑:程序博客网 时间:2024/05/25 21:33
1.题目:
Problem Description
任意输入一个由若干个圆括号、方括号和花括号组成的字符串,设计一个算法判断该串中的括号是否配对。
Input
有多组数据,每组为一个包含3类括号的字符串,串长不超过100。
Output
若该串中的括号匹配输出1,否则输出0。
Sample Input
([{}])([{}})([{)]}
Sample Output
100
2.参考代码:
#include <iostream>#include <string.h>using namespace std;class SeqStack{ ///顺序栈private:char data[1111];int top;public:SeqStack(){top=-1;}~SeqStack(){}void Push(char x){data[++top]=x;}char GetTop(){return data[top];}void Pop(){if(top!=-1)top--;}bool empty(){if(top==-1)return true;else return false;}};int main(){char s[1111];int i,len;while(gets(s)){len=strlen(s);SeqStack w;for(i=0;i<len;i++){if(s[i]=='(' || s[i]=='[' || s[i]=='{') w.Push(s[i]); ///若遇到左圆括号,左花括号,左方括号,则直接入栈else if(s[i]==')') ///遇到右圆括号{if(!w.empty()) ///若不为空{if(w.GetTop()=='(') ///就判断栈顶是否为左圆括号w.Pop(); ///是的话,就将栈顶的左圆括号出栈elsew.Push(s[i]); ///否则当前元素入栈}elsew.Push(s[i]); ///当前元素入栈}else if(s[i]=='}') ///遇到右花括号和上面的同理{if(!w.empty()){if(w.GetTop()=='{')w.Pop();elsew.Push(s[i]);}elsew.Push(s[i]);}else if(s[i]==']') ///遇到右方括号和上面的同理{if(!w.empty()){if(w.GetTop()=='[')w.Pop();elsew.Push(s[i]);}elsew.Push(s[i]);}}if(w.empty()) ///若遍历完整个字符串后,栈为空则说明匹配成功cout<<1<<endl;elsecout<<0<<endl; ///否则不成功}return 0;}
- 判括号匹配(顺序栈)
- 括号匹配--顺序栈实现
- 顺序栈—括号匹配
- 顺序栈实现括号匹配
- 顺序栈实现括号匹配
- 数据结构(严蔚敏)顺序栈_括号匹配的检验
- 用顺序栈实现匹配括号功能
- 顺序栈的括号匹配算法
- 括号的匹配,顺序栈方法
- 顺序栈的应用-括号匹配
- 用顺序栈解决括号是否匹配
- 利用顺序栈实现括号匹配
- 括号匹配(栈)
- 括号匹配(栈)
- 括号匹配(栈)
- 顺序栈 & 顺序栈的括号匹配算法
- 括号匹配(栈实现)
- 括号匹配(栈操作)
- CCCamera 摄像机 详解
- [每日一题] 11gOCP 1z0-053 :2013-10-14 普通文件损的最佳恢复步骤.................................54
- 第七课 列表和可变性、字典、效率简介
- 国内HTML5前端开发框架汇总
- nyoj 128 前缀式计算 模拟水题 回溯
- 判括号匹配(顺序栈)
- DR校正原理概述
- 将J2EE 的war包编译成android下可运行的war包
- where 1 = 1 or 0 = 0
- 用JavaScript编写换肤程序
- 深入学习Python内置数据类型之——字典(Dictionary)
- 内存具体创建
- Mahout基于项目的协同过滤算法源码分析(5)--推荐
- POJ 1017Packets(贪心)