//Array Queue
class QueueArray
{   int a[];
    int front, rear;
    QueueArray(int size)
    {   a=new int[size];
        front=0;
        rear=-1;
    }

    public void enqueue(int value)//insert an element
    {   if(rear==a.length-1)
        {   System.out.println("Overflow");
        }
        else
        {   rear++;
            a[rear]=value;
        }
    }//enqueue()

    public int dequeue()//delete an element
    {   if(rear==-1)
        {   System.out.println("Underflow");
            return 0; //error code
        }
        else
        {   int temp=a[front];
            front++;
            if(front>rear)
            {   reset();
            }
            return temp;
        }
    }//dequeue()
    
    private void reset()//if list is emptied 
    {   front=0;
        rear=-1;
    }

    public void fifo()//traverse
    {   for(int i=front; i<=rear; i++)
        {   System.out.print(a[i]+" ");
        }
        System.out.println();
    }

    public static void main(String args[])
    {   QueueArray queue=new QueueArray(5);
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        queue.enqueue(4);
        queue.enqueue(5);
        queue.enqueue(6);
        queue.fifo();
        queue.dequeue();
        queue.dequeue();
        queue.dequeue();
        queue.fifo();
    }//main
}//class
/*
OUTPUT
Overflow
1 2 3 4 5
4 5
*/
