program of circular queue

Upload: abhinavsingh

Post on 09-Jan-2016

215 views

Category:

Documents


0 download

DESCRIPTION

c program to demonstratre circular queue

TRANSCRIPT

/*Program of Circular Queue*/

#include#include# define MAX 5typedef struct Q{int rear,front;int data[MAX];} Q;void initialize(Q *P);int empty (Q *P);int full(Q *P);void enqueue(Q *P,int x);int delqueue(Q *P);void print(Q *P);

void main(){Q q;int op ,x;initialize(&q);clrscr();

do{printf("\n\n 1) Insert \n 2) Delete \n 3) Print \n 4)Quit \n");printf("\n Enter your choice:");scanf("%d",&op);

switch(op){case 1 : printf("\n Enter a value"); scanf("%d",&x); if(!full(&q)) enqueue(&q,x); else printf("\nCircular Queue is full!!!"); break;

case 2 : if(!empty(&q)) { x=delqueue(&q); printf("\n Deleted Data =%d",x); } else printf("\nCircular Queue is empty!!!"); break;

case 3 : print(&q); break; } } while(op!=4) ; }

void initialize(Q *P){P->rear=-1;P->front=-1;}int empty(Q *P){if (P->rear==-1)return 1;return 0;}int full(Q *P){if((P->rear+1)%MAX==P->front)return 1;return 0;}void enqueue(Q *P, int x){if(P->rear==-1){P->rear=P->front=0;P->data[P->rear]=x;}else{P->rear=(P->rear+1)%MAX;P->data[P->rear]=x;}}int delqueue(Q *P){int x;x=P->data[P->front];if(P->rear==P->front){P->rear=-1;P->front=-1;}elseP->front=(P->front+1)%MAX;return x;}void print(Q *P){int i;if(empty(P))return ;printf("\n");for(i=P->front;i!=P->rear;i=(i+1)%MAX)printf("%d \t",P->data[i]);printf("%d \t",P->data[i]);

}