#include <stdio.
h>
#define MAX_SIZE 100
Struct Queue {
Int queue[MAX_SIZE];
Int front;
Int rear;
};
Void initializeQueue(struct Queue *q) {
q->front = -1;
q->rear = -1;
Int isEmpty(struct Queue *q) {
Return (q->front == -1);
Int isFull(struct Queue *q) {
Return (q->rear == MAX_SIZE – 1);
Void enqueue(struct Queue *q, int data) {
If (isFull(q)) {
Printf(“Queue is full\n”);
Return;
If (isEmpty(q)) {
q->front = 0;
q->rear++;
q->queue[q->rear] = data;
printf(“Enqueued %d in queue\n”, data);
}
Int dequeue(struct Queue *q) {
If (isEmpty(q)) {
Printf(“Queue is empty\n”);
Return -1;
Int data = q->queue[q->front];
// If the queue is empty reset the pointers
If (q->front == q->rear) {
q->front = -1;
q->rear = -1;
} else {
q->front++;
Printf(“Deleted element: %d\n”, data);
Return data;
Void display(struct Queue *q) {
If (isEmpty(q)) {
Printf(“Queue is empty\n”);
Return;
For (int I = q->front; I <= q->rear; i++) {
Printf(“%d “, q->queue[i]);
Printf(“\n”);
Int main() {
Struct Queue q;
initializeQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf(“Elements in the queue after enqueue operation: “);
display(&q);
dequeue(&q);
printf(“Elements in the queue after dequeue operation: “);
display(&q);
return 0;
}
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
Typedef struct Node {
Int data;
Struct Node* next;
} Node;
Node* createNode(int new_data)
Node* new_node = (Node*)malloc(sizeof(Node));
New_node->data = new_data;
New_node->next = NULL;
Return new_node;
Typedef struct Queue {
Node *front, *rear;
} Queue;
Queue* createQueue()
Queue* q = (Queue*)malloc(sizeof(Queue));
q->front = q->rear = NULL;
return q;
}
Int isEmpty(Queue* q)
If (q->front == NULL && q->rear == NULL) {
Return 1;
Return 0;
Void enqueue(Queue* q, int new_data)
Node* new_node = createNode(new_data);
If (q->rear == NULL) {
q->front = q->rear = new_node;
return;
q->rear->next = new_node;
q->rear = new_node;
Void dequeue(Queue* q)
If (isEmpty(q)) {
Printf(“Queue Underflow\n”);
Return;
}
Node* temp = q->front;
q->front = q->front->next;
If (q->front == NULL)
q->rear = NULL;
Free(temp);
Int getFront(Queue* q)
If (isEmpty(q)) {
Printf(“Queue is empty\n”);
Return INT_MIN;
Return q->front->data;
Int getRear(Queue* q)
If (isEmpty(q)) {
Printf(“Queue is empty\n”);
Return INT_MIN;
Return q->rear->data;
Int main()
{
Queue* q = createQueue();
Enqueue(q, 10);
Enqueue(q, 20);
Printf(“Queue Front: %d\n”, getFront(q));
Printf(“Queue Rear: %d\n”, getRear(q));
Dequeue(q);
Dequeue(q);
Enqueue(q, 30);
Enqueue(q, 40);
Enqueue(q, 50);
Dequeue(q);
Printf(“Queue Front: %d\n”, getFront(q));
Printf(“Queue Rear: %d\n”, getRear(q));
Return 0;