反转队列的内容

时间:2017-04-17 15:56:40

标签: java queue reverse

我必须反转队列的内容,但目前我遇到了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

1 个答案:

答案 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]