问答详情
源自:4-4 栈应用括号匹配二

default后的内容毫无必要吧?

看了老师讲得这个括号匹配的问题,感觉有几个问题:

1、首先老师这个程序只能判断所有字符都为括号的匹配问题,只要里面存在其他字符(即使为空格),就会判断为不匹配,比如[(4)]这种;

2、因此,default后完全是多余的,因为根本不会存在其他字符的情形;

3、而且,default后面去掉,该程序对于完全是括号的字符的括号匹配判断完全是够用的,首先像[()]这种肯定是能判断的,而且针对后面这种[()]],当判断了,前面四个括号后,pStack所指的栈和pNeedStack所指的栈此时均为空了,而且currentNeed也被置为了0;因此接下来会执行:

if(pStack->stackEmpty())	
{		
cout << "字符串括号匹配" << endl;	
}	
else	
{		
cout << "字符串括号不匹配" << endl;	
}

也就判断出了[()]]括号不匹配了;

我想老师之所以写了default是因为老师还写了字符串中还有其他字符的情形的括号匹配问题

提问者:慕沐6276351 2018-09-03 11:25

个回答

  • Hanley0
    2019-07-27 01:39:33

    其实说白了一个栈就足够解决这个问题了,老师写这些应该是为了后续扩展的需要吧

  • 慕数据4455288
    2018-09-06 08:55:40

    我觉得有道理,只要currentNeed设为0,[()]]中最后一个‘]’就可以放入pStack栈中,此时pStack非空就可得不匹配