括号匹配问题

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相关推荐

  1. c语言一串字符括号配对,C语言实现括号匹配的方法

    1 要求 编写程序检查该字符串的括号是否成对出现,而且不能交叉出现. 输入: 一个字符串,里边可能包含"()"."{}"."[]"三种括号, ...

  2. 字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...

    问题标题 数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 2019-8-21来自ip:13.149.196.77的网友咨询 浏览量:270 手机版 问题补充 ...

  3. SWUST OJ 962: 括号匹配问题(C语言实现)

    看了网上一些关于这道题的解法,发现许多都写得很繁琐,简单的题当然简单做啦,所以码了一个比较简洁没有任何技术含量的解法~~ 大的思路当然是一样的,'(' 和 '[' 进栈,遇到 ')' 和 ']' 就判 ...

  4. 括号匹配检查c语言,c 语言 检查括号匹配 不能运行 ????

    各位请帮我看一下这个东西, 我要在c语言中实现括号匹配,设计思路:把从链栈中扫描得到的'}',']',')'先存储到动态申请的内存空间中,当扫描到'{','[','('时 在弹出先前存储的')','] ...

  5. swust oj 962

    括号匹配问题 1000(ms) 65535(kb) 3045 / 13375 假设表达式中允许包含两种括号:圆括号和方括号.编写一个算法判断表达式中的括号是否正确配对. 输入 由括号构成的字符串,包含 ...

  6. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

  7. Algorithm:C++语言实现之链表相关算法(单链公共结点问题、一般LCA、括号匹配、最长括号匹配、逆波兰表达式Reverse Polish Notation、直方图矩形面积、收集雨水问题)

    Algorithm:C++语言实现之链表相关算法(单链公共结点问题.一般LCA.括号匹配.最长括号匹配.逆波兰表达式Reverse Polish Notation.直方图矩形面积.收集雨水问题) 目录 ...

  8. c语言栈训练题目:括号匹配

    c语言栈训练题目:括号匹配 基本思路: 当前字符不是括号,不做处理: 当前字符是左括号,则进栈: 当前字符是右括号:若栈空,则表明该"右括号"多余,不匹 配,结束:否则和栈顶元素比 ...

  9. 栈 括号匹配问题(C语言)

    栈 括号匹配问题(C语言) 栈 括号匹配问题 问题描述: 假设一个算术表达式中可以包含三种括号:圆括号"("和")",方括号"["和&quo ...

最新文章

  1. 7、Altiris cms 7.0 软件管理 下
  2. 使用基本MVC2模式创建新闻网站
  3. windows电脑制作mac os u盘重装系统_图文演示u盘重装系统步骤
  4. mysql gbk支持_mysql如何支持gbk编码
  5. 一篇文章把Self-Attention与Transformer讲明白
  6. c++ 已声明变量提示未定义
  7. SQL Server读写分离之发布订阅
  8. 【Python基础知识-pycharm版】第二节-赋值/数据类型/时间点/运算符/字符串
  9. 零百1.8秒的电动车竟然是威马... | 云逛成都车展
  10. 结构体定义小的放前面_编程C语言进阶篇——自定义数据类型:结构体
  11. Android ProgressDialog示例
  12. 反射: 反射在中Android运用
  13. 为什么别人的晋升速度这么快?
  14. pycharm preparing workspace 项目打不开怎么办?
  15. matlab java堆内存溢出,matlab内存溢出的解决方案
  16. ubuntu/linux系统管理(12)Ubuntu 22.04 安装文件比对工具Meld替代Beyond Compare
  17. java中的Dao类是什么意思
  18. 推广海报你需要注意的几个小细节
  19. Linux实用操作sed、crontab、awk等(有实例说明)
  20. Autolabor Simulator激光雷达导航与避障(模拟平台)

热门文章

  1. Photoshop CS4 磁性套索工具
  2. java 代码注释_Java代码注释
  3. 在李佳琦的直播间里,看不到华熙生物的未来
  4. vue从创建到完整饿了么(16)watch监听子路由变化
  5. 东芝推出适用于三相无刷电机的600V正弦波PWM驱动器IC
  6. 招警考试技巧——近代著名画家简介
  7. php人群定向搜索,搜索推广定向分为几种?推荐6种定向方式组合玩法
  8. 解密科通芯城商业模式:线上生意没那么好做
  9. 超实用的折纸翻书,开发出这款漫画绝对爆了!
  10. PHP输出二十六个英文字母