例如,让charStack成为一个只包含堆栈的堆栈,我想创建一个从堆栈弹出元素直到堆栈顶部为')'的函数。当然,如果')'不是堆栈中的元素,则抛出异常
以下哪种方法是更好的方法来实现上述目的?为什么? (问题在于C ++语言。如果在另一种主要语言中有更好的解决方案,请解释)
方法1:弹出时间
While(!charStack.isEmpty() && charStack.top()!= ')'){
func(charStack.pop());}
if(charStack.isEmpty())
throw exception;
return func2(charStack.pop());
方法2:当
时为真While(true){
if(charStack.isEmpty())
throw exception;
if(charStack.top()== ')')
break;
func(charStack.pop());}
return func2(charStack.pop());
func1 - 一个通用(void)函数,它处理所有元素,直到')'
func2 - 处理')'
的通用函数答案 0 :(得分:0)
你应该避免使用while(true)
循环,因为它们使代码有点不可读。对于读者(他们没有遇到过你的代码),这个循环变得无限的"直到他找到休息状态。另一方面,如果while
循环包含良好的条件,读者可以很容易地理解这个循环的生命周期。所以,我更喜欢第一种方法。