JAVA堆栈实现队列编码
时间: 2024-10-12 14:15:26 浏览: 32
在Java中,虽然标准库提供的是基于数组或链表的Queue接口实现(如LinkedList、ArrayDeque等),但如果你想手动利用堆栈数据结构实现队列,可以使用类似`Stack`的类,比如`Vector`或`ArrayDeque`。这里是一个简单的例子,我们将创建一个名为`MyQueue`的类,它包含两个`Stack`,一个用于入队(push操作),另一个用于出队(pop操作):
```java
import java.util.Stack;
public class MyQueue<T> {
private Stack<T> inStack;
private Stack<T> outStack;
public MyQueue() {
inStack = new Stack<>();
outStack = new Stack<>();
}
// 入队操作,相当于Enqueue
public void enqueue(T item) {
inStack.push(item);
}
// 出队操作,相当于Dequeue
public T dequeue() {
if (outStack.isEmpty()) { // 如果出队栈为空,将inStack内容倒入outStack
while (!inStack.isEmpty()) {
outStack.push(inStack.pop());
}
}
return outStack.pop(); // 出队并移除顶部元素
}
// 检查队列是否为空
public boolean isEmpty() {
return inStack.isEmpty() && outStack.isEmpty();
}
// 返回队列大小(模拟)
public int size() {
return inStack.size() + outStack.size();
}
}
```
在这个实现中,当你向队列添加元素时(enqueue),直接放入`inStack`;而从队列取出元素时(dequeue),先检查`outStack`是否为空,如果为空则将`inStack`的内容逐个压入到`outStack`上,最后再弹出`outStack`的顶部元素。
注意,这个手动堆栈实现的队列并不像内置的Queue那样高效,因为它涉及到额外的拷贝操作。在实际应用中,建议使用Java提供的官方队列实现。
阅读全文