java用两个栈实现一个队列
时间: 2024-02-11 16:14:37 浏览: 97
在Java中,可以使用两个栈来实现一个队列,这个队列的特点是先进先出(FIFO)。
具体实现如下:
1. 定义两个栈stack1和stack2,stack1用于入队列,stack2用于出队列。
2. 入队操作时,将元素压入stack1。
3. 出队操作时,判断stack2是否为空,如果不为空,则直接弹出stack2的栈顶元素;如果为空,则将stack1中的元素全部弹出并压入stack2,然后再弹出stack2的栈顶元素。
示例代码如下:
```java
import java.util.Stack;
public class QueueWithTwoStacks<T> {
private Stack<T> stack1 = new Stack<>();
private Stack<T> stack2 = new Stack<>();
public void enqueue(T data) {
stack1.push(data);
}
public T dequeue() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
```
上面的代码演示了如何使用两个栈来实现一个队列,这样可以在O(1)的时间内完成入队和出队操作。
阅读全文