c语言swustoj括号匹配问题,swust oj 962
括号匹配问题
1000(ms)
65535(kb)
3045 / 13375
假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。
输入
由括号构成的字符串,包含”(“、”)“、”[“和”]“。
输出
如果匹配输出YES,否则输出NO。
样例输入
[([][]())]
样例输出
YES
首先是手撕链栈的用法
1 #include
2 #include
3 #include
4 #include
5 typedef char Datetype;
6 using namespace std;
7
8 typedef struct link{
9 Datetype date;
10 struct link *next;
11 }Lnode;
12
13 void Initstack(Lnode *&L)
14 {
15 L=(Lnode *)malloc(sizeof(Lnode));
16 L->next=NULL;
17 }
18
19 void destroystack(Lnode *&L)
20 {
21 Lnode *p=L,*r=p->next;
22 while(r!=NULL)
23 {
24 free(p);
25 p=r;
26 r=r->next;
27 }
28 free(p);
29 }
30
31 void push(Lnode *L , Datetype e)
32 {
33 Lnode *p;
34 p = (Lnode *)malloc(sizeof(Lnode));
35 p->date = e ;
36 p->next=L->next;
37 L->next=p;
38 }
39
40 bool stackempty(Lnode *L)
41 {
42 return(L->next==NULL);
43 }
44
45 bool pop(Lnode *&L , Datetype &e)
46 {
47 Lnode *p;
48 if(L->next==NULL)
49 return false;
50 p=L->next;
51 L->next=p->next;
52 e=p->date;
53 free(p);
54 return true;
55 }
56
57 bool gettop(Lnode *L, Datetype &e)
58 {
59 if(L->next==NULL)
60 return false;
61 e=L->next->date;
62 return true;
63 }
64
65 int main()
66 {
67 char a[1000],x;
68 cin>>a;
69 Lnode *L=NULL;
70 Initstack(L);
71 for(int i=0;i
72 {
73 if(stackempty(L)) //栈为空就直接入栈
74 {
75 push(L,a[i]);
76 }
77 else{
78 gettop(L,x);
79 if(x=='('&&a[i]==')') //配对后就出栈
80 {
81 pop(L,x);
82 }
83 else if(x=='['&&a[i]==']')
84 {
85 pop(L,x);
86 }
87 else
88 {
89 push(L,a[i]); //未配对成功就入栈
90 }
91 }
92 }
93 if(stackempty(L))
94 cout<
95 else
96 cout<
97 destroystack(L);
98 return 0;
99 }
然后是利用STL的做法
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std;
8 char arr;
9 int main()
10 {
11 stackst;
12 while(scanf("%c",&arr)&&arr!='\n')
13 {
14 if(st.empty())
15 {
16 st.push(arr);
17 continue;
18 }
19 if((arr==']'&&st.top()=='[')||(arr==')'&&st.top()=='('))
20 st.pop();
21 else
22 st.push(arr);
23 }
24 if(st.empty())
25 cout<
26 else
27 cout<
28 }
标签:arr,include,oj,962,NULL,next,st,swust,Lnode
来源: https://www.cnblogs.com/Iwpml-595/p/10676323.html
c语言swustoj括号匹配问题,swust oj 962相关推荐
- c语言一串字符括号配对,C语言实现括号匹配的方法
1 要求 编写程序检查该字符串的括号是否成对出现,而且不能交叉出现. 输入: 一个字符串,里边可能包含"()"."{}"."[]"三种括号, ...
- 字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...
问题标题 数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 2019-8-21来自ip:13.149.196.77的网友咨询 浏览量:270 手机版 问题补充 ...
- SWUST OJ 962: 括号匹配问题(C语言实现)
看了网上一些关于这道题的解法,发现许多都写得很繁琐,简单的题当然简单做啦,所以码了一个比较简洁没有任何技术含量的解法~~ 大的思路当然是一样的,'(' 和 '[' 进栈,遇到 ')' 和 ']' 就判 ...
- 括号匹配检查c语言,c 语言 检查括号匹配 不能运行 ????
各位请帮我看一下这个东西, 我要在c语言中实现括号匹配,设计思路:把从链栈中扫描得到的'}',']',')'先存储到动态申请的内存空间中,当扫描到'{','[','('时 在弹出先前存储的')','] ...
- swust oj 962
括号匹配问题 1000(ms) 65535(kb) 3045 / 13375 假设表达式中允许包含两种括号:圆括号和方括号.编写一个算法判断表达式中的括号是否正确配对. 输入 由括号构成的字符串,包含 ...
- c语言括号匹配的检验,检验括号匹配的算法
用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...
- Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)
Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...
- c语言栈训练题目:括号匹配
c语言栈训练题目:括号匹配 基本思路: 当前字符不是括号,不做处理: 当前字符是左括号,则进栈: 当前字符是右括号:若栈空,则表明该"右括号"多余,不匹 配,结束:否则和栈顶元素比 ...
- 栈 括号匹配问题(C语言)
栈 括号匹配问题(C语言) 栈 括号匹配问题 问题描述: 假设一个算术表达式中可以包含三种括号:圆括号"("和")",方括号"["和&quo ...
最新文章
- 7、Altiris cms 7.0 软件管理 下
- 使用基本MVC2模式创建新闻网站
- windows电脑制作mac os u盘重装系统_图文演示u盘重装系统步骤
- mysql gbk支持_mysql如何支持gbk编码
- 一篇文章把Self-Attention与Transformer讲明白
- c++ 已声明变量提示未定义
- SQL Server读写分离之发布订阅
- 【Python基础知识-pycharm版】第二节-赋值/数据类型/时间点/运算符/字符串
- 零百1.8秒的电动车竟然是威马... | 云逛成都车展
- 结构体定义小的放前面_编程C语言进阶篇——自定义数据类型:结构体
- Android ProgressDialog示例
- 反射: 反射在中Android运用
- 为什么别人的晋升速度这么快?
- pycharm preparing workspace 项目打不开怎么办?
- matlab java堆内存溢出,matlab内存溢出的解决方案
- ubuntu/linux系统管理(12)Ubuntu 22.04 安装文件比对工具Meld替代Beyond Compare
- java中的Dao类是什么意思
- 推广海报你需要注意的几个小细节
- Linux实用操作sed、crontab、awk等(有实例说明)
- Autolabor Simulator激光雷达导航与避障(模拟平台)