一个数据结构括号匹配算法问题,这里是括号匹配的检验算法,请问,为什么开头用void了,然后结尾这里还?

使用下面代码前需要引入基本算法。另外数据结构括号匹配算法的基本算法已经更新新增了“队列”的基本算法。

假设表达式中允许有两种括号:圆括号和方括号其嵌套的顺序随意,即(()[ ])或[([ ] [ ])]等为正确格式[( ])或(((]均为不正确的格式。检验括号是否匹配的方法可用“期待的紧迫程度”这个概念来描述例如:考虑下列的括号序列:  [ ( [ ] [ ] ) ]
读入含有圆括号和方括号的任意序列,输出“匹配”或“此串括号匹配不合法”

文章仅代表作者个人观点,转载请注明出处!

发布了31 篇原创文章 · 获赞 64 · 访问量 6万+

元旦三天假闲着没事干,就想著复习一下学数据结构括号匹配算法时的那些算法吧本来是想用C语言来写的,无奈啊三四年没用C了,基本上忘光光还是用C#来写吧,洏且.Net基类库中已经有了栈、队列等的实现直接拿来用用吧。第一个算法是用来判断表达式中的括号(仅限小括号)是否匹配的(其实謌很想找个妹子出去约会啊,不想复习神马算法啊可惜的是找不到妹子,哭死)

 对于表达式中的括号是否匹配不能仅仅通过统计左括號'('出现的次数和右括号')'出现的次数是否相等来实现,“a*)b+c(”这样的表达式中的括号显然是不匹配的检验括号是否匹配最常见的方法是借助於栈这种数据结构括号匹配算法,从左到右逐个字符扫描表达式碰到左括号"("则压入栈中(push),碰到右括号")"则弹出栈顶元素(pop)如果栈为空则匹配失败。字符串扫描完成后如果栈为空,则匹配成功否则匹配失败。代码如下:

 
 

参考资料

 

随机推荐