括号匹配问题

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. LeetCode 804 Unique Morse Code Words--python,java解法
  2. 2020人工神经网络第一次作业-参考答案第五部分
  3. 解决Visual Code安装中文插件失败问题
  4. SAP HANA CLOUD和aws一个实际项目中的性能比较
  5. 存储过程 触发器 约束
  6. 依赖倒转原则_Java设计模式的七大原则
  7. pythonopencv算法_opencv python 光流法
  8. fastmock模拟常见数据结构
  9. ROS配置ipv6方法
  10. android monkey,Android Monkey搭建 你不用了解的
  11. mysql jena rdf_Jena 操作 RDF 文件
  12. NVI(Non-Virtual Interface )
  13. uniapp地图轨迹回放
  14. 探索 Sa-Token (一) SpringBoot 集成 Sa-Token
  15. 【小程序】微信小程序自定义导航栏及其封装
  16. 解决vue项目在ie浏览器中无法显示的问题,兼容低版本浏览器问题
  17. Linux进程守护者: 进程监视及自动重启崩溃的进程
  18. org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.ljw
  19. Linux Socket编程入门——浅显易懂
  20. python环境问题(环境切换)

热门文章

  1. jsp通过form表单提交数据到servlet报404
  2. 什么是数据采集入门技术?
  3. 8问 | 别开场面:大咖齐聚DVP,大话白帽与黑客
  4. 安卓二维码扫描时出现图片拉伸
  5. [项目管理-11]:软硬件项目管理 - 项目管理三要素与项目管理模式
  6. 图片压缩 Thumbnails
  7. 赵子琪 swf 动画
  8. mysql添加列到指定位置
  9. 安卓强制恢复出厂_恢复出厂设置都没用,安卓木马病毒xHelper究竟该如何清除?...
  10. 报表怎么做领导都不满意?一文教你如何做出让人满意的报表