反转队列的方法

时间:2015-05-22 19:02:24

标签: queue reverse

我为队列准备了以下课程。

public class queueArray {

    final int maxNumbers=1000;
    protected Item[] arrayInfo;
    protected int head ,tail;

    public queueArray(){
        head=tail=0;
        arrayInfo= new Item[maxNumbers];
    }

    public boolean isEmpty(){
        return(head==tail && arrayInfo[tail]==null);
    }

    public void insert(Item a){
        if(head == tail && arrayInfo[tail]!=null){
            System.out.println("Η ουρά είναι γεμάτη.");
            return;
        }
        arrayInfo[tail]=a;
        tail=(tail+1)%maxNumbers;
    }

    public Item removeFirst(){
        if (head == tail && arrayInfo[head]!=null){
            System.out.println("Η ουρά είναι γεμάτη.");
            return null;
        }
        arrayInfo[head]=null;
        head=(head+1)%maxNumbers;
        return arrayInfo[head];
    }
}

我如何制作一个反转队列线索的额外方法?

2 个答案:

答案 0 :(得分:0)

如果使用.NET Queue类,则可以调用Reverse(),例如:

            Queue<int> q = new Queue<int>();  
            q.Enqueue(1);  
            q.Enqueue(2);  
            q.Enqueue(15);  
            q.Enqueue(22);  

            q.Reverse(); 

答案 1 :(得分:0)

这样做的一种方法是从队列的前面拉出所有元素并将它们推送到堆栈。然后从堆栈顶部拉出并将这些元素推回队列。