2015-05-22 42 views
0

我得到了以下类的队列。扭转队列的方法

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]; 
    } 
} 

我该如何做一个额外的方法来反转队列的线索?

回答

0

如果您使用.NET Queue类,那么你可以叫反向()例如:

这样做将是把所有的元素从队列前面的
  Queue<int> q = new Queue<int>(); 
      q.Enqueue(1); 
      q.Enqueue(2); 
      q.Enqueue(15); 
      q.Enqueue(22); 

      q.Reverse(); 
0

的一种方式并将它们推入堆栈。然后从堆栈顶部拉出并将这些元素推回到队列中。