Double-Ended Queue

A double-ended queue is an abstract data type similar to an simple queue, it allows you to insert and delete from both sides means items can be added or deleted from the front or rear end.



queues


Algorithm for Insertion at rear end


Step -1: [Check for overflow]

	if(rear==MAX)

		Print("Queue is Overflow”);

        return;

Step-2: [Insert element]

	else

		rear=rear+1;

		q[rear]=no;      

		[Set rear and front pointer]               

		if rear=0

			rear=1;

		if front=0

			front=1;

Step-3: return




Implementation of Insertion at rear end


void add_item_rear()

{

	int num;

	printf("\n Enter Item to insert : ");

	scanf("%d",&num);

	if(rear==MAX)

	{

		printf("\n Queue is Overflow");

		return;

	}

	else

	{

		rear++;

		q[rear]=num;

		if(rear==0)

			rear=1;

		if(front==0)

			front=1;

	}

}




Algorithm for Insertion at font end


Step-1 : [Check for the front position]

	if(front<=1)

		Print (“Cannot add item at front end”);

	return;

Step-2  : [Insert at front]

	else

		front=front-1;

		q[front]=no;

Step-3  : Return






Implementation of Insertion at font end


void add_item_front()

{

	int num;

	printf("\n Enter item to insert:");

	scanf("%d",&num);

	if(front<=1)

	{

		printf("\n Cannot add item at front end");

		return;

	}

	else

	{

		front--;

		q[front]=num;

	}

}






Algorithm for Deletion from front end


Step-1 [ Check for front pointer]

	if front=0

		print(" Queue is Underflow”);

	return;

Step-2 [Perform deletion]        

	else

		no=q[front];

		print(“Deleted element is”,no);

		[Set front and rear pointer]     

	if front=rear

		front=0;

		rear=0;

	else

		front=front+1;

Step-3 : Return




Implementation of Deletion from front end


void delete_item_front()

{

	int num;

	if(front==0)

	{

		printf("\n Queue is Underflow\n");

		return;

	}

	else

	{

		num=q[front];

		printf("\n Deleted item is %d\n",num);

		if(front==rear)

		{

			front=0;

			rear=0;

		}

		else

		{

			front++;

		}

	}

}




Algorithm for Deletion from rear end


Step-1 : [Check for the rear pointer]

	if rear=0

		print(“Cannot delete value at rear end”);

	return;

Step-2: [ perform deletion]

	else

		no=q[rear];

		[Check for the front and rear pointer]

	if front= rear

		front=0;

		rear=0;

	else

		rear=rear-1;

		print(“Deleted element is”,no);

Step-3 : Return




Implementation of Deletion from rear end


void delete_item_rear()

{

	int num;

	if(rear==0)

	{

		printf("\n Cannot delete item at rear end\n");

		return;

	}

	else

	{

		num=q[rear];

		if(front==rear)

		{

			front=0;

			rear=0;

		}

		else

		{

			rear--;

			printf("\n Deleted item is %d\n",num);

		}

	}

}