stack.pop() 在 if 语句中

stack.pop() inside of if statement

我想知道在 if 语句中从 Stack 数据结构调用 pop() 方法是否会从堆栈中弹出第一个元素?

这是一个代码示例:

public void pop() {
    if(stack.pop() == min) min=stack.pop();
}

这行得通吗?或者像这样声明它更好:

public void pop() {
    int poppedOff = stack.pop();
    if(poppedOff == min) min=stack.pop();
}

我假设它们在做同样的事情,但我不完全确定。

是的。每次调用 pop 都会从堆栈中弹出一个元素。使用 peek() 或在调用 pop() 时保存值(如第二个示例)。此外,将 min 设置为等于该值的值是没有意义的。