public class DEqueue
{   int a[], elements, front, rear;
    DEqueue()
    {   a=new int[5];
        elements=0;
        front=-1;
        rear=-1;
    }
    void pushFront(int value)
    {   if(elements==a.length)
        {   System.out.println("Overflow");
        }
        else
        {   if(front==0)
            {   System.out.println("Front full");
            }
            else
            {   elements++;
                front--;
                a[front]=value;
            }
        }
    }//pushFront
    int popFront()
    {   int temp=0;
        if(elements==0)
        {   System.out.println("Underflow");
        }
        else
        {   temp=a[front];
            front++;
            elements--;
            if(elements==0)//reset
            {   front=-1;
                rear=-1;
            }
        }
        return temp;
    }//popFront
    void pushRear(int value)
    {   if(elements==a.length)
        {   System.out.println("Overflow");
        }
        else
        {   elements++;
            rear++;
            if(front==-1)
            {   front=0;
            }
            a[rear]=value;
        }
    }//pushRear
    int popRear()
    {   int temp=0;
        if(elements==0)
        {   System.out.println("Underflow");
        }
        else
        {   temp=a[rear];
            rear--;
            elements--;
            if(elements==0)//reset
            {   front=-1;
                rear=-1;
            }
        }
        return temp;
    }//popRear
    void display()
    {   for(int i=front; i<=rear; i++)
        {   System.out.print(a[i]+" ");
        }
        System.out.println();
    }
    public static void main(String args[])
    {   DEqueue dq=new DEqueue();
        dq.pushRear(1);
        dq.pushRear(2);
        dq.pushRear(3);
        dq.display();
        dq.popFront();
        dq.display();
        dq.pushFront(4);
        dq.display();
        dq.popRear();
        dq.display();
        dq.pushRear(5);
        dq.display();
    }//main
}//class
/* OUTPUT
1 2 3
2 3
4 2 3
4 2
4 2 5
*/

