#include printf("The queue Node* newNode =
<stdio.h>#include is empty!\n"); (Node*)malloc(sizeof(N
<stdlib.h> return; } ode));
#define MAX 5 printf("Queue: "); if (!newNode) {
typedef struct { int for (int i = q->front; i printf("Memory
items[MAX]; <= q->rear; i++) allocation error\n");
int front, rear; printf("%d ", q- return; }
} Queue; >items[i]); newNode->data =
void initialize(Queue printf("\n");} val;
*q) { int main() { newNode->next =
q->front = -1; Queue q; NULL;
q->rear = -1;} initialize(&q); if (q->rear == NULL)
int isEmpty(Queue *q) enqueue(&q, 10); {
{ enqueue(&q, 20); q->front = q-
return (q->front == - enqueue(&q, 30); >rear = newNode;
1);} printQueue(&q); return;}
int isFull(Queue *q) { printf("Dequeued: q->rear->next =
return (q->rear == %d\n", dequeue(&q)); newNode;
MAX - 1);} printQueue(&q); q->rear =
void enqueue(Queue enqueue(&q, 40); newNode;}
*q, int value) { enqueue(&q, 50); void dequeue(Queue*
if (isFull(q)) { enqueue(&q, 60); q) {
printf("Error: printQueue(&q); if (isEmpty(q)) {
Queue is full!\n"); return 0;} printf("Queue is
return; } )))))Linked list))))))))00 empty, cannot
if (isEmpty(q)) #include <stdio.h> dequeue\n");
q->front = 0; #include <stdlib.h> return;}
q->rear++; typedef struct Node { Node* temp = q-
q->items[q->rear] = int data; >front;
value; struct Node* next; q->front = q->front-
printf("%d added to } Node; >next;
the queue.\n", value);} typedef struct Queue { if (q->front ==
int dequeue(Queue *q) Node* front; NULL)
{ Node* rear; q->rear = NULL;
if (isEmpty(q)) { } Queue; free(temp);}
printf("Error: Queue* createQueue() int front(Queue* q) {
Queue is empty!\n"); { if (isEmpty(q)) {
return -1; } Queue* q = printf("Queue is
int value = q- (Queue*)malloc(sizeof( empty\n");
>items[q->front]; Queue)); return -1; }
if (q->front == q- q->front = q->rear = return q->front-
>rear) { NULL; >data;}
initialize(q); return q;} void display(Queue* q)
} else { int isEmpty(Queue* q) {
q->front++; } { if (isEmpty(q)) {
return value;} return (q->front == printf("Queue is
void printQueue(Queue NULL);} empty\n");
*q) { void enqueue(Queue* return; }
if (isEmpty(q)) { q, int val) { Node* temp = q-
>front;
printf("Queue return q;} return q->arr[q-
elements:"); int isEmpty(Queue* q) >front];}
while (temp) { { int peek(Queue* q) {
printf("%d -> ", return (q->front == - if (isEmpty(q)) {
temp->data); 1);} printf("Queue is
temp = temp- int isFull(Queue* q) { empty\n");
>next; } return ((q->rear + 1) return -1; }
printf("NULL\n");} % MAX_SIZE == q- return q->arr[q-
void freeQueue(Queue* >front);} >front];}
q) { void enqueue(Queue* void display(Queue* q)
Node* temp; q, int value) { {
while (q->front) { if (isFull(q)) { if (isEmpty(q)) {
temp = q->front; printf("Queue is printf("Queue is
q->front = q- full, cannot enqueue\ empty\n");
>front->next; n"); return;}
free(temp); } return; } printf("Queue
free(q);} if (q->front == -1) { elements:");
int main() { q->front = 0; } int i = q->front;
Queue* q = q->rear = (q->rear + while (i != q->rear) {
createQueue(); 1) % MAX_SIZE; printf("%d -> ", q-
enqueue(q, 10); q->arr[q->rear] = >arr[i]);
enqueue(q, 20); value; i = (i + 1) %
enqueue(q, 30); printf("%d enqueued MAX_SIZE; }
display(q); to queue\n", value);} printf("%d\n", q-
printf("Front void dequeue(Queue* >arr[q->rear]);
element: %d\n", q) { }
front(q)); if (isEmpty(q)) { void freeQueue(Queue*
dequeue(q); printf("Queue is q) {
display(q); empty, cannot free(q);
printf("Front element dequeue\n"); }
after dequeue: %d\n", return; } int main() {
front(q)); int dequeuedValue = Queue* q =
freeQueue(q); q->arr[q->front]; createQueue();
return 0;} if (q->front == q- enqueue(q, 10);
circular queue >rear) { enqueue(q, 20);
#include <stdio.h> q->front = q- enqueue(q, 30);
#include <stdlib.h> >rear = -1; enqueue(q, 40);
#define MAX_SIZE 5 } else { enqueue(q, 50);
typedef struct Queue { q->front = (q- display(q);
int arr[MAX_SIZE]; >front + 1) % dequeue(q);
int front; MAX_SIZE; } display(q);
int rear; printf("%d dequeued enqueue(q, 60);
} Queue; from queue\n", display(q);
Queue* createQueue() dequeuedValue);} printf("Front
{ int front(Queue* q) { element: %d\n",
Queue* q = if (isEmpty(q)) { front(q));
(Queue*)malloc(sizeof( printf("Queue is printf("Peek element:
Queue)); empty\n"); %d\n", peek(q));
q->front = q->rear = return -1; } freeQueue(q);
-1; return 0;