You are on page 1of 5

/*Implementation of linear queue with array*/ #include <stdio.

h> #define MAX 400000 struct data{ int value; }; typedef struct house{ int front,rear; struct data items[MAX]; }house; int isFull(house *var){ return (var->rear==MAX-1?1:0); } int isEmpty(house *var){ return (var->rear==var->front?1:0); } void enqueue(house *var,int num){ if(isFull(var)){printf("Overflow!!\n");} else{ (var->items[++(var->rear)]).value=num; } } int dqueue(house *var){ if(isEmpty(var)){printf("Underflow!\n");} else{ var->front+=1; return (var->items[var->front]).value; } }

void traverse(house *var){ int start=var->front; while(start!=var->rear) printf("%d->",(var->items[++start]).value);}

main(){ struct house home; home.front=home.rear=-1; printf("Entering queue components:\n"); enqueue(&home,9); enqueue(&home,3); enqueue(&home,12); printf("The entered values are:\n"); traverse(&home); printf("NULL\n"); printf("Value dqueued:%d\n",dqueue(&home)); printf("After removing the values are:\n"); traverse(&home); printf("NULL\n"); return 0; }

/*Implementation of linear queue with linked list*/ #include <stdio.h> #include <malloc.h> typedef struct list{ int data; struct list *link; }list; list* createNode(list *p,int num){ p = (list*)malloc(sizeof(list)); p->data = num; p->link = NULL; return p; } int isEmpty(list *front,list *rear){ return(front?0:(rear=0)||1); } list *next(list *q){ return(q->link); } int info(list *p){ return p->data; } list* insert(list *front,list *rear,int num){ if(isEmpty(front,rear)){ rear=front=0; rear = createNode(rear,num); } else{ rear->link = createNode(rear->link,num);

rear = next(rear); } return rear; } list *del(list *front,list *rear){ list *p; if(isEmpty(front,rear)) printf("Underflow!!"); else{ p = front; front = next(front); printf("The dequeued element is:%d\n",info(p)); free(p); } return front; } void traverse(list *front){ while(front){ printf("%d->",info(front)); front=next(front); } } main(){ list *front,*rear; front=rear=NULL; front = rear=insert(front,rear,12); rear = insert(front,rear,13); rear = insert(front,rear,4); printf("The queue at this point is:\n"); traverse(front);

printf("NULL\n"); front = del(front,rear); printf("After dequeuing the list is:\n"); traverse(front); printf("NULL\n"); return 0;}

You might also like