java两个栈实现一个队列
时间: 2024-02-11 11:30:24 浏览: 100
要使用两个栈来实现一个队列,可以按照以下步骤进行操作:
1. 创建两个栈,称为stack1和stack2。其中,stack1用于入队操作,stack2用于出队操作。
2. 入队操作:将元素压入stack1。
3. 出队操作:首先判断stack2是否为空,如果不为空,则直接从stack2中弹出栈顶元素作为出队元素;如果为空,则将stack1中的所有元素依次弹出并压入stack2,然后再从stack2中弹出栈顶元素作为出队元素。
这样,通过使用两个栈,就可以实现一个队列的功能。以下是一个Java示例代码实现:
```java
import java.util.Stack;
public class TwoStacksQueue<T> {
private Stack<T> stack1;
private Stack<T> stack2;
public TwoStacksQueue() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void enqueue(T item) {
stack1.push(item);
}
public T dequeue() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
public boolean isEmpty() {
return stack1.isEmpty() && stack2.isEmpty();
}
public int size() {
return stack1.size() + stack2.size();
}
}
```
这样,你就可以使用这个TwoStacksQueue类来实现使用两个栈实现一个队列的功能了。
阅读全文