用栈实现队列,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回答

liuyubobobo

2020-12-06

跟值和引用没有关系。当 stack 是空的时候,调用 stack.peek 就会出发这个异常。


P.S. 当 stack 为空的时候,调用 stack.pop() 也会触发这个异常。想要看 stack 的栈顶元素,或者拿出栈顶元素,首先要保证 stack 不为空。


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2614 学习 · 1087 问题

查看课程