如何实现队列
问题1:设计一个逆置队列元素的算法,要求算法在访问队列元素时,只能使用队列抽象数据类型中的操作。
分析:
队列的出队操作队首元素,入队操作队尾元素,如果只是直接把队首出队放到队尾入队,那么遍历一次之后队列的顺序将不会改变。所以我们要借助一个栈临时存放数据来实现队列的逆置算法,把队列中的元素依次出队后压栈,队空之后,再把栈中的元素依次出栈,然后入队,等到栈空之后,队列中的元素顺序就逆置了。
Java版本实现
package dataStructure;
public class QueueApplication<T> {
LLQueue<T> reserveQueue(LLQueue<T> queue) {
MyStack<T> stack = new MyStack<T>();
while(!queue.isEmpty()) {
stack.push(queue.removeQueue());
}
while(!stack.isEmpty()) {
queue.addQueue(stack.pop());
}
return queue;
}
public static void main(String[] args) {
QueueApplication<Integer> qal = new QueueApplication<>();
LLQueue<Integer> lq = new LLQueue<>();
lq.addQueue(2);
lq.addQueue(