java用两个队列实现一个栈,写代码
时间: 2024-02-11 18:14:37 浏览: 95
两个队列实现一个栈
4星 · 用户满意度95%
在Java中,可以使用两个队列来实现一个栈,这个栈的特点是后进先出(LIFO)。
具体实现如下:
1. 定义两个队列queue1和queue2,queue1用于压栈,queue2用于弹栈。
2. 压栈操作时,将元素插入queue1。
3. 弹栈操作时,将queue1中的元素依次出队并插入queue2,直到queue1中只剩下一个元素,此时直接弹出该元素;然后交换queue1和queue2,以便下一次压栈操作。
示例代码如下:
```java
import java.util.LinkedList;
import java.util.Queue;
public class StackWithTwoQueues<T> {
private Queue<T> queue1 = new LinkedList<>();
private Queue<T> queue2 = new LinkedList<>();
public void push(T data) {
queue1.offer(data);
}
public T pop() {
if (queue1.isEmpty()) {
throw new RuntimeException("Stack is empty!");
}
while (queue1.size() > 1) {
queue2.offer(queue1.poll());
}
T result = queue1.poll();
Queue<T> temp = queue1;
queue1 = queue2;
queue2 = temp;
return result;
}
}
```
上面的代码演示了如何使用两个队列来实现一个栈,这样可以在O(1)的时间内完成压栈和弹栈操作。
阅读全文