括号匹配的检验(数据结构之栈 二)
来源:互联网 发布:padding tensorflow 编辑:程序博客网 时间:2024/06/04 19:37
描述
采用栈实现,练习进栈入栈函数的编写.
输入
输入的第一行包含一个数,n
n表示要用例的个数
接下来是n行由括号构成的字符串,包含‘(’、‘)’、‘[’、‘]’。
输出
对每一测试用例,用一行输出结果,如果匹配,输出“YES”,否则输出“NO”
样例输入
2
[([][]())]
)[]()
[([][]())]
)[]()
样例输出
YES
NO
NO
#include<iostream>#include<stdio.h>#include<stdlib.h>#define MI 100#define MX 1000using namespace std;typedef struct{ int *top; int *base; int stacklist;}sqstack;int inistack(sqstack &s){ s.base =(int *)malloc(MI*sizeof(int)); if(!s.base)exit(-2); s.top=s.base; s.stacklist=MI; return 0;}int push(sqstack &s,int e){ if(s.top-s.base==s.stacklist) { s.base=(int *)realloc(s.base,(s.stacklist+MX)*sizeof(int)); s.top=s.base+s.stacklist; s.stacklist+=MX; } *s.top++=e; return 1;}int pop(sqstack &s){ if(s.top==s.base)return 0; *--s.top; return 1;}int gettop(sqstack &s,char &e){ if(s.top==s.base)return 0; e=*(s.top-1); return 1;}int main(){ int n; sqstack s; char c,e; cin>>n; getchar(); while(n--) { inistack(s); while((c=getchar())!='\n'){ if(s.top==s.base)push(s,c); else {if(c=='('||c=='[')push(s,c); if(c==')') { gettop(s,e); if(e=='(')pop(s); else push(s,c); } if(c==']') { gettop(s,e); if(e=='[')pop(s); else push(s,c); } } } if(s.top==s.base)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0;}
如果有疑问,请留言
- 括号匹配的检验(数据结构之栈 二)
- 栈的应用之二----------括号匹配的检验
- 数据结构(严蔚敏)顺序栈_括号匹配的检验
- 栈的应用之括号匹配检验
- 数据结构--括号匹配检验
- 8、数据结构笔记之八栈的应用之括号匹配检验实现
- 数据结构 P49 栈的应用举例-括号匹配的检验
- 【数据结构】用栈实现括号匹配的检验
- 数据结构应用-----------括号匹配的检验
- 栈-括号匹配的检验
- [栈]括号匹配的检验
- 数据结构题典021:栈的应用——括号匹配的检验(C++)
- 栈的应用之括号匹配的检验
- 栈的应用之括号匹配的检验
- 括号匹配检验 数据结构运用
- 括号匹配的检验
- 括号的匹配检验
- 括号匹配的检验
- C语言中简单的for循环和浮点型变量
- Ural 1019. Line Painting
- ACM进阶
- 有关于Vector对象的问题
- 动态代理与spring AOP
- 括号匹配的检验(数据结构之栈 二)
- Linux常用命令详解之文件处理命令一
- poj2420
- 《C++编程规范》读书笔记(上)
- SSH的整合
- [转]多模匹配算法与dictmatch实现
- delphi7写的个人笔记本(模版功能已经实现)
- OGNL 与 Struts 2
- 测试工具集合