用两个栈实现队列的入队和出队操作的具体代码
时间: 2024-10-21 09:11:32 浏览: 26
Java编程用两个栈实现队列代码分享
下面是用两个栈实现队列的入队和出队操作的具体代码:
```
class MyQueue {
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public void push(int x) {
stack1.push(x);
}
public int pop() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.isEmpty() ? -1 : stack2.pop();
}
public int peek() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.isEmpty() ? -1 : stack2.peek();
}
public boolean empty() {
return stack1.isEmpty() && stack2.isEmpty();
}
}
```
其中,`push`方法用于入队,直接将元素压入`stack1`中;`pop`方法用于出队,如果`stack2`为空,则将`stack1`中的元素全部弹出并压入`stack2`中,然后弹出`stack2`的栈顶元素即可;`peek`方法用于获取队首元素,与`pop`方法类似,只是不弹出栈顶元素;`empty`方法用于判断队列是否为空,当`stack1`和`stack2`都为空时,队列为空。
阅读全文