CHP 2
CHP 2
⚫ Introduction
⚫ Operations on Queue
⚫ Representation of Queue
⚫ Types of queue
Simple queue
Circular Queue
Priority Queue
Dequeue
⚫ Applications
⚫ or Linked List.
rear++;
queue[rear] = value;
printf("\nInsertion success!!!");
}
}
Prof. Geeta Arwindekar, Datta Meghe
College of Engg
C implementation of Queue Array
void dequeue()
{
if(rear==-1 || front == rear)
printf("\nQueue is Empty!!! Deletion is not possible!!!");
else
{
front++;
printf("\nDeleted : %d", queue[front]);
}
}
1. Simple Queue
2. Circular Queue
3. Priority Queue
4. Dequeue (Double Ended Queue)
•Disadvantage:
Cannot insert elements though front elements are
deleted once queue full
30 40 50 60 70 80 90
front rear
Circular Queue
⚫ Overcomes drawback of simple queue
7 0
1
6
2
5
Prof. Geeta Arwindekar, Datta Meghe
4 3 College of Engg
C Program for Circular Queue
#include<stdio.h>
#include<conio.h>
#define MAX 6
int queue[MAX];
int front=0,rear=0,count=0;
C Program for Circular Queue
int main()
{
int ch;
while(1)
{
printf("Enter Your Choice:");
scanf("%d",&ch);
switch(ch)
{
case 1: enqueue();
break;
case 2: dequeue();
break;
case 3:display();
break;
case 4: exit(0);
default:printf("Invalid option\n");
}
}
}
C Program for Circular Queue
void enqueue()
{
int data;
if(count==MAX)
printf(“Queue Overflow\n”);
else
{
printf(“Enter data\n”);
scanf(“%d”,&data);
queue[rear]=data;
rear=(rear+1)%MAX;
count++;
}
}
C Program for Circular Queue
void dequeue()
{
int data;
if(count==0)
printf(“Queue Underflow\n”);
else
{
data=queue[front];
front=(front+1)%MAX;
count--;
printf(“Element deleted is %d\n”,data);
}
}
C Program for Circular Queue
void display
{
int I,j;
if(count==0)
printf(“Queue Underflow\n”);
else
{
printf(“Elements in queue are\n”);
j=Count;
for(i=front;j!=0;j--)
{
printf(“%d “,queue[i]);
i=(i+1)%MAX;
}
}
}
Circular Queue output
Priority Queue
15 12 9 5 3
C code for Descending Priority Queue
void enqueue()
{
If(count==MAX)
printf(“Queue is full\n”);
else if(count==0)
{
queue[count]=data;
count++;
}
else
{
for(i=count-1;i>=0;i--)
{
If(data>queue[i])
{
queue[i+1]=queue[i];
}
else
{
break;
}
}queue[i+1]=data;
count++;
}
}
C code for Descending Priority Queue
void dequeue()
{
return(queue[--count];
}
Dequeue
⚫ Double Ended Queue
⚫ insertion and deletion operations can
be done at both FRONT and END of the
queue.
An input-restricted deque
deletion can be made from both ends, but
insertion can be made at one end only.
An output-restricted deque
insertion can be made at both ends, but deletion
can be made from one end only.
Types of Dequeue