堆栈括号匹配怎么弄_堆栈括号匹配怎么弄出来

堆栈括号匹配怎么弄_堆栈括号匹配怎么弄出来堆栈用法和应用详解括号匹配一.定义堆栈是一种数据项按顺序排列的数据结构。具有以下特性:后进先出 :类似往箱子里装东西,得先把放在上面的东西先拿出来,才可以拿到先放进去的东西。

堆栈用法和应用详解–括号匹配
  一.定义

  堆栈是一种数据项按顺序排列的数据结构。

  具有以下特性:

  后进先出 :类似往箱子里装东西,得先把放在上面的东西先拿出来,才可以拿到先放进去的东西。

  只能从栈顶提取数据

  二.stack类运用

  包含头文件: #include<stack>

  创建一个名称为s的堆栈对象: stack<数据类型>s;

  将一个名称为c,与堆栈对象中存放的数据类型相同的数据压入堆栈: s.push(c);

  栈顶元素,并放入变量temp: temp=s.top( );

  将栈顶元素弹出: s.pop( );

  判断堆栈是否为空: s.empty(),如果为空则该函数返回true,不为空则该函数返回false。

  三.例题详解

  1.题目描述:

  处理表达式过程中需要对括号匹配进行检验,括号匹配包括三种:“(”和“)”,“[”和“]”,“{”和“}”。例如表达式中包含括号如下:

  ( ) [ ( ) ( [ ] ) ] { }

  1 2 3 4 5 6 7 8 9 10 11 12

  从上例可以看出第1和第2个括号匹配,第3和第10个括号匹配,4和5匹配,6和9匹配,7和8匹配,11和12匹配。从中可以看到括号嵌套的的情况是比较复杂的,使用堆栈可以很方便的处理这种括号匹配检验,可以遵循以下规则:

  当接收第1个左括号,表示新的一组匹配检查开始;随后如果连续接收到左括号,则不断进堆栈。

  当接受第1个右括号,则和最新进栈的左括号进行匹配,表示嵌套中1组括号已经匹配消除

  若到最后,括号不能完全匹配,则说明输入的表达式有错

  输入:

  第一行输入一个t,表示下面将有t组测试数据。接下来的t行的每行输入一个表达式,表达式只考虑英文半角状态输入,无需考虑中文全角输入

  输出:

  对于每一行的表达式,检查括号是否匹配,匹配则输入ok,不匹配则输出error.

  解题思路:这道题可以直接用c++的stack类实现,

  完整代码:

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/96941.html

(0)
上一篇 2024年 5月 22日 07:02
下一篇 2024年 5月 22日

相关推荐

关注微信