You are on page 1of 8

8/17/2016

CircularQueues

SortingAlgorithms
Algorithms
Tree
OnlineShopping

CircularQueue
Acircularqueueisanabstractdatatypethatcontainsacollectionofdatawhichallowsadditionofdataatthe
endofthequeueandremovalofdataatthebeginningofthequeue.Circularqueueshaveafixedsize.
CircularqueuefollowsFIFOprinciple.Queueitemsareaddedattherearendandtheitemsaredeletedatfront
endofthecircularqueue.

AlgorithmforInsertioninacircularqueue

InsertCircularQueue()

1.If(FRONT==1andREAR==N)or(FRONT==REAR+1)Then

2.
Print:Overflow

3.Else

4.
If(REAR==0)Then[CheckifQUEUEisempty]
http://scanftree.com/Data_Structure/circularqueue

2/10

8/17/2016

CircularQueues

(a)SetFRONT=1

(b)SetREAR=1

5.ElseIf(REAR==N)Then[IfREARreachesendifQUEUE]

6.

SetREAR=1

7.Else

8.

SetREAR=REAR+1[IncrementREARby1]

[EndofStep4If]

9.SetQUEUE[REAR]=ITEM

10.Print:ITEMinserted

[EndofStep1If]

11.Exit

Implementationofinsertionincircularqueue

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<ctype.h>

#include<stdlib.h>

#definesize8

intrear,front;

intno;

intq[size];

intrear=1;

intfront=1;

http://scanftree.com/Data_Structure/circularqueue

3/10

8/17/2016

CircularQueues

/*Functiontocreatequeue*/

voidInsert_queue()

charans;

printf("\nEnter'n'forbreak:");

ans=getch();

while(ans!='n')

printf("\nInputtheElement:");

scanf("%d",&no);

if((front==0)&&(rear==size1))

printf("\nQueueisOverflow");

return;

elseif(rear==front1)

printf("\nQueueisoverflow");

return;

elseif(front<0)/*InsertFirstElement*/

front=0;

rear=0;

http://scanftree.com/Data_Structure/circularqueue

4/10

8/17/2016

CircularQueues

q[rear]=no;

elseif(rear==size1)

rear=0;

q[rear]=no;

else

rear++;

if(rear==front)

printf("\nQueueisoverflow");

return;

else

q[rear]=no;

printf("\nEnter'n'forbreak:");

ans=getch();

voidDisplay_queue()

http://scanftree.com/Data_Structure/circularqueue

5/10

8/17/2016

CircularQueues

inti;

if(front<0)

printf("\nQueueisunderflow");

return;

printf("\nItemsare:\n");

if(rear>=front)

for(i=front;i<=rear;i++)

printf("\nq[%d]=%d",i,q[i]);

else

for(i=front;i<size;i++)

printf("\nl2q[%d]=%d",i,q[i]);

for(i=0;i<=rear;i++)

printf("\nl3q[%d]=%d",i,q[i]);

/*Functionmain*/

http://scanftree.com/Data_Structure/circularqueue

6/10

8/17/2016

CircularQueues

voidmain()

clrscr();

Insert_queue();

Display_queue();

getch();

AlgorithmforDeletioninacircularqueue

DeleteCircularQueue()

1.If(FRONT==0)Then[CheckforUnderflow]

2.
Print:Underflow

http://scanftree.com/Data_Structure/circularqueue

7/10

8/17/2016

CircularQueues

3.Else

4.
ITEM=QUEUE[FRONT]

5.

If(FRONT==REAR)Then[Ifonlyelementisleft]

(a)SetFRONT=0

(b)SetREAR=0

6.ElseIf(FRONT==N)Then[IfFRONTreachesendifQUEUE]

7.

SetFRONT=1

8.Else

9.

SetFRONT=FRONT+1[IncrementFRONTby1]

[EndofStep5If]

10.Print:ITEMdeleted

[EndofStep1If]

11.Exit

Cfuctionofdeletionincircularqueue

voidDelete_queue()

if(front<0)

printf("\nQueueisUnderflow");

return;

no=q[front];

q[front]=NULL;

printf("\nElementdeleted:",no);

if(front==rear)
http://scanftree.com/Data_Structure/circularqueue

8/10

8/17/2016

CircularQueues

front=1;

rear=1;

}
elseif(front==size1)
{

front=0;

}
else
{

front++;

Next

http://scanftree.com/Data_Structure/circularqueue

9/10

You might also like