慕沐6276351
2018-09-03 11:25
看了老师讲得这个括号匹配的问题,感觉有几个问题:
1、首先老师这个程序只能判断所有字符都为括号的匹配问题,只要里面存在其他字符(即使为空格),就会判断为不匹配,比如[(4)]这种;
2、因此,default后完全是多余的,因为根本不会存在其他字符的情形;
3、而且,default后面去掉,该程序对于完全是括号的字符的括号匹配判断完全是够用的,首先像[()]这种肯定是能判断的,而且针对后面这种[()]],当判断了,前面四个括号后,pStack所指的栈和pNeedStack所指的栈此时均为空了,而且currentNeed也被置为了0;因此接下来会执行:
if(pStack->stackEmpty()) { cout << "字符串括号匹配" << endl; } else { cout << "字符串括号不匹配" << endl; }
也就判断出了[()]]括号不匹配了;
我想老师之所以写了default是因为老师还写了字符串中还有其他字符的情形的括号匹配问题
其实说白了一个栈就足够解决这个问题了,老师写这些应该是为了后续扩展的需要吧
我觉得有道理,只要currentNeed设为0,[()]]中最后一个‘]’就可以放入pStack栈中,此时pStack非空就可得不匹配
数据结构探险—栈篇
62733 学习 · 102 问题
相似问题