C/C++:下的括号匹配问题

描述

    现在,有一行括号序列,请你检查这行括号是否配对。

输入

    第一行输入一个数N(0

输出

      每组输入数据的输出占一行,如
      果该字符串中所含的括号是配对的,则输出Yes,
      如果不配对则输出No         

样例输入

      3
      [(])
      (])
      ([[]()])

样例输出

   No
   No
   Yes

代码如下

C/C++:下的括号匹配问题_第1张图片
C/C++:下的括号匹配问题_第2张图片

下面列出#include"stack"的主要用法

stack S;//声明一个对象
S.empty();//栈空返回true 否则false
int x=S.size();//返回栈中元素个数于x
S.pop();//移除栈顶元素
S.push(x);将x置于栈顶
x=S.top();返回栈顶元素

小结

括号匹配问题主要运用2个方面的知识:
1:栈入栈出
之前大一的时候,数据结构实验课上,老师让自己写个链表去实现栈入,栈出,以及判断栈是否是空栈之类的,然后调用自己写的方法来验证匹配
怎么说呢,很繁琐,在这里,我们直接加入#include"stack"这个头文件就可以了,声明对象之后,就直接可以拿来用,(当然,你也可以自己写一个头文件,然后加载到你自己的项目里面)
2:二维动态数组的创建和使用:
在这个题里面:你是不知道它有多少行的,而且每行输入多少个也是不知道的,
其实在做很多题时,都会创建二维的动态数组,当然,每个人的习惯用法也不一样,每种编译软件的用法也不一样。
在这个VC环境下的二维动态数组的创建,我采用的是:
char *data=new char[row];
这样就可以创建一个有row(输入的数)行的二维数组
然后:

 for(int j=0;j>data[j];
    }

这样我们可以动态创建数组的二维:data[0],data[1],data[2]…的空间一样,但每个数组的实际占有度不一样(就像strlen与sizeof的区别)
PS:可能有些地方需要改进,希望大佬们可以留言指正或者改进,多多交流,多多学习

你可能感兴趣的:(C/C++:下的括号匹配问题)