在自定义类MyQueue<E>中封装两个栈,使MyQueue<E>类实现push、pop、peek、isEmpty等方法,并满足队列的基本特性,即先进先出,后进后出。
时间: 2024-05-14 11:12:38 浏览: 66
很高兴回答你的问题,对于MyQueue<E>类的实现,我们可以使用两个栈来封装实现,第一个栈作为输入栈,用于进行入队操作,第二个栈作为输出栈,用于进行出队操作。具体实现细节可以参考以下代码示例:
```
import java.util.Stack;
public class MyQueue<E> {
private Stack<E> inputStack = new Stack<>();
private Stack<E> outputStack = new Stack<>();
public void push(E element) {
inputStack.push(element);
}
public E pop() {
if (isEmpty()) {
throw new RuntimeException("Queue is empty!");
}
if (outputStack.isEmpty()) {
while (!inputStack.isEmpty()) {
outputStack.push(inputStack.pop());
}
}
return outputStack.pop();
}
public E peek() {
if (isEmpty()) {
throw new RuntimeException("Queue is empty!");
}
if (outputStack.isEmpty()) {
while (!inputStack.isEmpty()) {
outputStack.push(inputStack.pop());
}
}
return outputStack.peek();
}
public boolean isEmpty() {
return inputStack.isEmpty() && outputStack.isEmpty();
}
}
```
希望这个回答能够帮助你!
阅读全文