2016-06-23 13 views
0

Wie drucken wir die zyklische Warteschlange in dem unten angegebenen Code. Nachdem die Warteschlange voll ist und wir ein Element entfernen und das nächste Element einfügen, das mit Index 0 kommt. Wie drucken wir es dann ?. Wie drucken wir zirkuläre Warteschlange in dem unten genannten Code.Drucken der zirkulären Warteschlange

class GQueue <T extends Object> 
{ 
    T[] arr; 
    int size; 
    int front; 
    int rear; 
    int length; 

    GQueue(int size) 
    { 
     this.size=size; 
     arr=(T[])new Object[this.size]; 
     front=-1; 
     rear=-1; 
     length=arr.length; 
    } 

    void EnQueue(T data) 
    { 
      if(isFull()) 
      { 
       System.out.println("Queue full"); 
       return; 
      } 

       else if(isEmpty()) 
        front=rear=0; 
       else 
       rear = (rear+1)%length; 

      arr[rear]=data; 
    } 

    void DeQueue() 
    { 
     if(isEmpty()) 
      return; 
     else if (front==rear) 
     { 
      front=rear=-1; 
     } 
     else 
      front=(front+1)%length; 

    } 

    T peek() 
    { 

     return arr[front]; 
    } 

    boolean isEmpty() 
    { 
     if(front==-1 && rear==-1) 
     return true; 
     else 
      return false; 


    } 

    boolean isFull() 
    { 
     if((rear+1) % length==front) 
      return true; 
     else 
      return false; 

    } 

    void print() 
    { 
     for(int i=front;i<=rear;i++) 
     { 
     System.out.print(arr[i]+" "); 
     } 
     System.out.println(); 
    } 
} 





public class GenericQueue { 

public static void main(String[] args) { 
    GQueue<Integer> gq = new GQueue<Integer>(10); 
    gq.EnQueue(1); 
    gq.EnQueue(2); 
    gq.EnQueue(3); 
    gq.EnQueue(4); 
    gq.EnQueue(5); 
    gq.EnQueue(6); 
    gq.EnQueue(7); 
    gq.EnQueue(8); 
    gq.EnQueue(9); 
    gq.EnQueue(10); 


    gq.print(); 
    gq.DeQueue(); 
    gq.EnQueue(11); 
    gq.print(); 
} 

}

+0

Wie wäre Verwendung ein Stift? Oder versuchen Sie es zu debuggen. – waltersu

Antwort

0
void print(){ 
    if (!isEmpty()) { 
     int i = front; 
     do { 
      System.out.print(" " + arr[i]; 
      i = ++i % arr.length; 
     while (i != rear); 
    } 
} 

Nicht getestet, aber ich denke, es ist richtig, oder zumindest gibt die allgemeine Idee.

+0

Ja, es hat fast funktioniert, außer es druckt nicht zuletzt das meiste Element, das am meisten Element hinten ist. Wir müssen hinzufügen ... System.out.print ("" + arr [hinten]);. .. nach while while loop ende –

0

nur verwenden, während (i in obigen Code zu vermeiden System.out.print Druck (“„+ arr [hinten]) wieder.

+0

while (i

0

Sie diesen Code versuchen können!

for(int i=front+1 ; i!=(rear+1) ; i=(i+1)%arr.length) 
{ 
    System.out.println(" "+arr[i]); 
}