CEG's Linux User Group

  • Increase font size
  • Default font size
  • Decrease font size
Home Labs CIRCULAR QUEUE IMPLEMENTATION USING ADT - SOURCE CODE
CIRCULAR QUEUE IMPLEMENTATION USING ADT

CIRCULAR QUEUE IMPLEMENTATION USING ADT - SOURCE CODE

E-mail Print
User Rating: / 2
PoorBest 
Article Index
CIRCULAR QUEUE IMPLEMENTATION USING ADT
SOURCE CODE
DOCUMENTATION
TEST CASES AND COMPATIBILITY
All Pages

 

 

CODE:

#include"stdio.h"
#include"stdlib.h"
typedef struct qrec
{
int *a;
int front,rear,cap,size;
}*queue;

queue makeempty(queue q)
{
q->rear=-1;
q->front=-1;
return q;
}

queue createqueue(int max)
{
queue q;
q=(queue)malloc(sizeof(struct qrec));
q->a=(int*)malloc(sizeof(int)*max);
makeempty(q);
q->cap=max;
return q;
}

int isfull(queue q)
{
return q->rear==q->cap-1 && q->front==0 || q->front==q->rear+1;
}

int isempty(queue q)
{
return q->front==-1;
}

void enqueue(queue q,int x)
{
if(isfull(q))
printf("\n Overflow");
else
{
q->rear=(q->rear+1)%(q->cap);
q->a[q->rear]=x;
if(q->front==-1)
q->front=0;
}
}

int dequeue(queue q)
{
if(isempty(q))
printf("\n Underflow");
else
{
if(q->rear==q->front)
makeempty(q);
else
{
q->front=(q->front+1)%(q->cap);
return q->a[q->front];
}
}
}

int front(queue q)
{
if(isempty(q))
printf("\n Underflow");
else
return q->a[q->front];
}

int frontanddelete(queue q)
{
int p;
if(isempty(q))
{
printf("underflow");
return 0;
}
else
{
p=front(q);
dequeue(q);
return p;
}
}
void display(queue q)
{
int i;
printf("\n CONTENTS");
for(i=q->front;i!=q->rear;i=(i+1)%q->cap)
printf("\t%d",q->a[i]);
printf("\t%d",q->a[i]);
}
int main()
{
int m,b,c;
queue q;

printf("\nEnter the max size");
scanf("%d",&m);
q=createqueue(m);
printf("\n MENU\n1.Enqueue\n2.Dequeue\n3.Front\n4.Front and delete\n5.Exit");
while(1)
{
printf("\n ENTER UR CHOICE");
scanf("%d",&b);
switch(b)
{
case 1:
printf("\n Enter a no");
scanf("%d",&c);
enqueue(q,c);
display(q);
break;
case 2:dequeue(q);
printf("\n Deq");
display(q);
break;
case 3:printf("\n Front value is %d",front(q));
display(q);
break;
case 4:frontanddelete(q);
display(q);
break;
case 5:exit(0);
break;
default:printf("\n Invalid option");
break;
}
}

}



Last Updated on Saturday, 13 June 2009 08:25  
Please register or login to add your comments to this article.