请用java实现下列题目: 用两个队列实现一个栈,栈的定义如下,请实现它的两个方法push和pop,分别完成从栈中弹出一个元素和给栈中压入一个元素的功能。 public class stack { private Queue<Integer> queue1; private Queue<Integer> queue2; public stack(){ queue1=new ArrayDeque<Integer>(); queue2=new ArrayDeque<Integer>(); } /** * 出栈 **/ public Integer pop() { } /** * 入栈 **/ public void push(Integer node) throws Exception { } }
时间: 2024-03-03 18:50:17 浏览: 74
好的,下面是用两个队列实现栈的Java代码:
```java
import java.util.ArrayDeque;
import java.util.Queue;
public class Stack {
private Queue<Integer> queue1;
private Queue<Integer> queue2;
public Stack() {
queue1 = new ArrayDeque<>();
queue2 = new ArrayDeque<>();
}
/**
* 出栈
**/
public Integer pop() {
if (queue1.isEmpty() && queue2.isEmpty()) {
return null;
}
if (queue2.isEmpty()) {
while (queue1.size() > 1) {
queue2.offer(queue1.poll());
}
return queue1.poll();
} else {
while (queue2.size() > 1) {
queue1.offer(queue2.poll());
}
return queue2.poll();
}
}
/**
* 入栈
**/
public void push(Integer node) {
if (queue1.isEmpty() && queue2.isEmpty()) {
queue1.offer(node);
} else if (queue1.isEmpty()) {
queue2.offer(node);
} else {
queue1.offer(node);
}
}
}
```
实现的思路是:用两个队列模拟栈的入栈和出栈操作,其中一个队列用于入栈,另一个队列用于辅助出栈操作。当需要弹出一个元素时,将第一个队列中的元素依次出队并入队到第二个队列中,直到第一个队列中只剩下一个元素,此时将它出队并返回即可。入栈操作则直接将元素入队到第一个队列中即可。
需要注意的是,当两个队列都为空时,出栈操作应该返回null。
阅读全文