什么是在堆栈中弹出和查找元素的更好方法

时间:2016-01-01 18:50:30

标签: c++ stack pop

例如,让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 - 处理')'

的通用函数

1 个答案:

答案 0 :(得分:0)

你应该避免使用while(true)循环,因为它们使代码有点不可读。对于读者(他们没有遇到过你的代码),这个循环变得无限的"直到他找到休息状态。另一方面,如果while循环包含良好的条件,读者可以很容易地理解这个循环的生命周期。所以,我更喜欢第一种方法。