// // queue.c // // // Created by Bibhas Ghoshal on 18/04/23. // #include struct fifo { int value; struct fifo *next; }; typedef struct fifo queue; queue *front, *rear; // Create a queue void createq (queue **front, queue **rear) { *front = NULL; *rear = NULL; } //Inserting an element in queue (Enqueue) void enqueue (queue **front, queue **rear, int x) { queue *ptr; ptr = (queue *) malloc(sizeof(queue)); if (*rear == NULL) /* Queue is empty */ { *front = ptr; *rear = ptr; ptr->value = x; ptr->next = NULL; } else /* Queue is not empty */ { (*rear)->next = ptr; *rear = ptr; ptr->value = x; ptr->next = NULL; } } // Deleting an element from queue (Dequeue) int dequeue (queue **front, queue **rear) { queue *old; int k; if (*front == NULL) /* Queue is empty */ printf ("\n Queue is empty"); else if (*front == *rear) /* Single element */ { k = (*front)->value; free (*front); front = rear = NULL; return (k); } else { k = (*front)->value; old = *front; *front = (*front)->next; free (old); return (k); } } // Checking if empty int isempty (queue *front) { if (front == NULL) return (1); else return (0); } main() { queue *Af, *Ar; createq (&Af, &Ar); enqueue (&Af,&Ar,10); enqueue (&Af,&Ar,20); enqueue(&Af,&Ar,30); printf ("\n %d %d \n", dequeue (&Af,&Ar), dequeue(&Af,&Ar)); // printf ("\n %d \n", // dequeue(&Af,&Ar)); if (isempty(Af)) printf ("\n Q is empty"); }