设Q是一个队列,s是一个空栈,实现将队列中的元素逆置的算法 Java
时间: 2024-10-14 21:18:48 浏览: 63
在Java中,我们可以使用双端队列(Deque)如`java.util.ArrayDeque`或者`java.util.Deque`接口(如果使用LinkedList作为底层实现),结合栈的数据结构,来实现队列元素的逆置。这里提供一种简单的算法:
```java
import java.util.Deque;
import java.util.Stack;
public class QueueReverse {
public static void reverseQueue(Deque<Integer> queue) {
Stack<Integer> stack = new Stack<>();
// 将队列的所有元素逐个压入栈中
while (!queue.isEmpty()) {
stack.push(queue.pop());
}
// 现在栈顶的元素就是原队列的最后一个元素,从栈中弹出并添加回队列
while (!stack.isEmpty()) {
queue.push(stack.pop());
}
}
// 测试
public static void main(String[] args) {
Deque<Integer> deque = new ArrayDeque<>();
deque.add(1);
deque.add(2);
deque.add(3);
deque.add(4);
System.out.println("Original queue: " + deque); // 原始队列
reverseQueue(deque);
System.out.println("Reversed queue: " + deque); // 反转后的队列
}
}
```
这个算法首先将队列的所有元素都复制到栈中,然后从栈中依次取出元素,再放回原来的队列,从而达到逆置的效果。
阅读全文