我必须反转队列的内容,但目前我遇到了reverseQueue方法的问题。每当我打印出来时,它会打印两次数组内容。如果有人能解释我做错了会有所帮助。
代码:
public static void reverseQueue (Queue Q){
for (int i = Q.size() -1; i>=0; i--){
int temp = (int) Q.dequeue();
Q.enqueue(temp);
System.out.print(temp+" ");
}
}
尺寸方法:
public int size(){
return count;
}
队列
public class Queue{
private int QUEUE_SIZE = 5;
private Object[] items;
private int front, back, count;
public Queue() {
items = new Object[QUEUE_SIZE];
front = 0;
back = QUEUE_SIZE -1;
count =0;
}
示例输出:
我要撤消我的队列。
我的队列如下: 20 30 40 50 20 30 40 50
答案 0 :(得分:0)
这可以通过复制到列表,反向和重新填充
来完成public static void main(String[] args) throws Exception {
Queue<Integer> foo = new ArrayDeque<>(Arrays.asList(1, 2, 3));
System.out.println(foo);
reverseQueue(foo);
System.out.println(foo);
}
public static <T> void reverseQueue(Queue<T> q) {
List<T> copy = new ArrayList<>(q);
Collections.reverse(copy);
q.clear();
q.addAll(copy);
}
输出
[1, 2, 3]
[3, 2, 1]