【数据结构】【栈】括号匹配算法(可直接运行) 文章目录 1.算法问题2.算法思路3.算法实现4.完整代码5.运行结果 1.算法问题 假设表达式中允许包含三种括号:()、[]、{},其嵌套的顺序任意,即([]{})或[()[]{}]等均为正确的格式,实现一个算法,完成对表达式中括号的检验。 2.算法思路 考虑以下括号序列: 分析如下: (1)计算机接收第一个括号 后,等待与之匹配的 出现。 (2)接收第二个括号 后,第一个括号放置一边,等待与之匹配的 出现。 (3)接收第三个括号 后,第二个括号暂时放置一边,等待能与之匹配的 出现。 (4)直至第四个括号出现,发现其能与最近的第三个括号匹配,那第三个括号匹配完成,退出等待。 (5)以此类推,第五个等待,第六个与第五个匹配完成后,第五个退出等待;第七个与第二个匹配完成后,第二个退出等待;第八个与第一个匹配完成后,扫描完成,且等待序列中没有了数据,匹配成功。 可以发现,此算法与栈的特性类似,后出现的左括号先匹配。 综上所述,可以得出大致算法如下: (1)初始创立一个空栈。 (2)逐个读入括号。 (3)如果是左括号,那么就压入栈中。 (4)如果是右括号,则先检查栈是否为空,如果栈为空,则表示无左括号与之匹配,匹配失败。如果栈不为空,则进入下一步。 (5)从栈顶取出素,检测此左括号与读入右括号是否匹配,如果不匹配,则返回匹配失败。如果匹配成功,则回到第二步,直至不满足循环条件。 (6)检测栈是否为空,如果栈为空,则表示匹配完成后还有多余的括号,匹配失败。若栈为空,则返回匹配成功。 3.算法实现 4.完整代码 5.运行结果
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/29651.html