用栈实现队列,pop()方法中维护front变量的问题
来源:3-3 作业解析:用栈实现队列
qiti
2020-12-06 22:27:25
public int pop() {
Stack<Integer> stack2 = new Stack<>();
while(stack.size() - 1 > 0){
stack2.push(stack.pop());
}
int ret = stack.pop();
front = stack2.peek();
while (!stack2.isEmpty())
stack.push(stack2.pop());
return ret;
}
波波老师您好,最初我选择stack的while循环结束后,用stack2.peek()去维护front变量,但是会报以下错误
Line 30: java.util.EmptyStackException
请问这是因为front = stack2.peek()其实是按引用传递吗,因为后面stack2变为一个空栈了
1回答
跟值和引用没有关系。当 stack 是空的时候,调用 stack.peek 就会出发这个异常。
P.S. 当 stack 为空的时候,调用 stack.pop() 也会触发这个异常。想要看 stack 的栈顶元素,或者拿出栈顶元素,首先要保证 stack 不为空。
继续加油!:)
相似问题