Cyclic Queue program using generics in java

 interface QueueADT<E>

{

void enqueue(E data);

E dequeue();

E peek();

int size();

boolean isEmpty();

void traverse();

}

class CyclicQueue

{

public static void main(String args[])

{

Integer[] arr=new Integer[5];

MyQueue<Integer> queue=new MyQueue<>(arr);

queue.enqueue(10);

queue.enqueue(20);

queue.enqueue(30);

queue.traverse();

Integer deleted=queue.dequeue();

    if(deleted!=null)

{

System.out.println("Deleted element:"+deleted);

}

else

{

System.out.println("Queue underflow.");

}

deleted=queue.dequeue();

if(deleted!=null)

{

System.out.println("Deleted element:"+deleted);

}

else

{

System.out.println("Queue underflow.");

}

queue.enqueue(100);

queue.enqueue(200);

queue.enqueue(300);

queue.enqueue(400);

queue.enqueue(500);

queue.traverse();

}

}

class MyQueue<E> implements QueueADT<E>

{

private E[] arr;

private int rear;

private int front;

private int size;

public MyQueue(E[] arr)

{

this.arr=arr;

rear=0;

front=0;

size=0;


}

public void enqueue(E data)

{

if(size!=arr.length)

{

//cyclic behavior


   if(rear==arr.length)

   {

     rear=0;

   }

arr[rear]=data;

rear++;

size++;

}

else

{

System.out.println("Queue is overflow.");

}


}

public E dequeue()

{

E response=null;

if(!isEmpty())

{

if(size!=arr.length)

{

if(front==arr.length)

{

front=0;

}

}

response=arr[front];

front++;

size--;

}

else

{

System.out.println("Queue is underflow");

}



return response;

}

public int size()

{

return size;

}

public boolean isEmpty()

{

if(size==0)

{

return true;

}

else

{

return false;

}

}

public E peek()

{

E response=null;

if(!isEmpty())

{

response=arr[front];

}

return response;

}

// cyclic queue traverse method

public void traverse()

{

System.out.println("Printing Queue :");

    System.out.print("front"+"<---");

if(rear<=front)

{

//front to length

for(int i=front; i<arr.length; i++)

{

System.out.print(" "+arr[i]+"<---");

}

//zero to rear

for(int i=0; i<rear; i++)

{

System.out.print(arr[i]+"<---");

}

}

else

{

for(int i=front; i<rear; i++)

{

System.out.print(arr[i]+"<---");

}

}

System.out.println("rear");

}


}



Post a Comment

0 Comments