You are on page 1of 10

Data Structure and Algorithm

Contents
What is Doubly Ended Queue (Dequeue)?
1. Doubly Ended queue or Dequeue is a linear data structure.

2. New elements can be added at either the front or the rear.


Likewise, existing items can be removed from either end.
Insert Insert

Delete Delete
Types of Dequeue?
1. Input Restricted Dequeue Insert

5 15 20 25

Delete Delete

2. Output Restricted Dequeue


Insert Insert

5 15 20 25

Delete
Operations in Input Restricted Dequeue
1. Insert from Rear

2. Delete from Front

3. Delete from Rear

4. Display the elements


Insert from Rear in Input Restricted Dequeue
void insert_from_rear() Size of the array named ‘dequeue’ is MAX
And declare front=-1, rear=-1 globally.
{ int element;
if((front == 0 && rear == MAX-1) || (front == rear+1))
printf("Queue Overflow n");
else
{printf (“Enter the element”);
scanf (“%d”, &element);
if(front == -1)
{front = 0;
rear = 0; }
else
{if(rear == MAX-1)
rear = 0;
else
rear = rear+1; }
dequeue[rear] = element ;
}
}
Delete from Front end from Input Restricted Dequeue
void delete_from_front()
{ Empty, front=-1, rear=-1
if(front == -1)
printf("Queue Underflow");
else
Delete 10, front=2, rear=4
{
printf("Element deleted from queue is :%d",dequeue[front]); 10 15 20 25
if(front == rear)
{front = -1; Delete 15, front=3, rear=4
rear=-1; } 15 20 25
else
{if(front == MAX-1)
front = 0; Delete 25, front=0, rear=1 Delete 11, front=1, rear=1
else 11 22 25 11 22
front = front+1;
}
} Delete 22, front=-1, rear=-1
}
22
Delete from Rear end from Input Restricted Dequeue
void delete_from_rear()
{ Empty, front=-1, rear=-1
if(front == -1)
printf("Queue Underflow");
else
Delete 25, front=1, rear=3
{
printf("Element deleted from queue is :%d",dequeue[rear]); 10 15 20 25
if(front == rear)
{front = -1; Delete 20, front=1, rear=2
rear=-1; } 10 15 20
else
{if(rear == 0)
rear = MAX-1; Delete 44, front=2, rear=0 Delete 33, front=2, rear=4
else 33 44 15 11 22 33 15 11 22
rear = rear-1;
}
} Delete 15, front=-1, rear=-1
}
15
Display the elements of circular Queue
void display()
{ int i, j;
if(front == -1) front<=rear, front=0, rear=-3
printf("Queue is empty"); 5 10 15 20
else
{
printf("Queue elements :n"); front>rear, front=3, rear=1
if( front<= rear)
{for(i=front; i<=rear; i++) 11 22 20 30
printf("%d ",cqueue[i]);}
else
{for(i=front; i<=MAX-1; i++)
printf("%d ",cqueue[i]);
for(j=0; j<=front; j++)
printf("%d ",cqueue_arr[j]);
}
}
}
Question?
Write at :trishita.ghosh@gnit.ac.in

You might also like