0% found this document useful (0 votes)
4 views9 pages

Queue

The document provides two implementations of queue operations: one using an array and the other using a linked list. Each implementation includes functions for enqueueing, dequeueing, checking if the queue is full or empty, displaying the front element, and displaying all elements. The main function presents a menu-driven interface for user interaction with the queue operations.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views9 pages

Queue

The document provides two implementations of queue operations: one using an array and the other using a linked list. Each implementation includes functions for enqueueing, dequeueing, checking if the queue is full or empty, displaying the front element, and displaying all elements. The main function presents a menu-driven interface for user interaction with the queue operations.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1.

Write a program to implement the following queue functions using array :


 enqueue()
 dequeue()
 front()
 isFull()
 isEmpty()
 display()

CODE:
#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int frontIndex = -1;
int rearIndex = -1;
int isFull() {
return rearIndex == SIZE - 1;
}
int isEmpty() {
return (frontIndex == -1 || frontIndex > rearIndex);
}
void enqueue(int value) {
if (isFull()) {
printf("Queue is FULL! Cannot enqueue %d\n", value);
return;
}
if (isEmpty()) {
frontIndex = rearIndex = 0;
} else {
rearIndex++;
}
queue[rearIndex] = value;
printf("%d enqueued to queue.\n", value);
}
void dequeue() {
if (isEmpty()) {
printf("Queue is EMPTY! Cannot dequeue.\n");
return;
}
printf("%d dequeued from queue.\n", queue[frontIndex]);
frontIndex++;
if (frontIndex > rearIndex) { // Reset when queue becomes empty
frontIndex = rearIndex = -1;
}
}
void front() {
if (isEmpty()) {
printf("Queue is EMPTY! No front element.\n");
} else {
printf("Front element: %d\n", queue[frontIndex]);
}
}
void display() {
if (isEmpty()) {
printf("Queue is EMPTY!\n");
return;
}
printf("Queue elements: ");
for (int i = frontIndex; i <= rearIndex; i++) {
printf("%d ", queue[i]);
}
printf("\n");
}

int main() {
int choice, value;
while (1) {
printf("\n--- Queue Menu ---\n");
printf("1. Enqueue\n2. Dequeue\n3. Front\n4. Is Full\n5. Is Empty\n6. Display\n7. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);

switch (choice) {
case 1:
printf("Enter value to enqueue: ");
scanf("%d", &value);
enqueue(value);
break;
case 2:
dequeue();
break;
case 3:
front();
break;
case 4:
if (isFull())
printf("Queue is FULL!\n");
else
printf("Queue is NOT full.\n");
break;
case 5:
if (isEmpty())
printf("Queue is EMPTY!\n");
else
printf("Queue is NOT empty.\n");
break;
case 6:
display();
break;
case 7:
printf("Thank you");
return 0;
break;
default:
printf("Invalid choice! Please try again.\n");
}
}

return 0;
}

OUTPUT:
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 1
Enter value to enqueue: 5
5 enqueued to queue.
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 1
Enter value to enqueue: 15
15 enqueued to queue.
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 2
5 dequeued from queue.
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 3
Front element: 15
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 4
Queue is NOT full.
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 5
Queue is NOT empty.
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 6
Queue elements: 15

--- Queue Menu ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 7
Thank you
2. Write a program to implement the following queue functions using Linked List :
 enqueue()
 dequeue()
 front()
 isFull()
 isEmpty()
 display()

CODE:
#include <stdio.h>
#include <stdlib.h>

struct Node {
int data;
struct Node* next;
};

struct Node* frontPtr = NULL;


struct Node* rearPtr = NULL;

int isEmpty() {
return (frontPtr == NULL);
}
int isFull() {
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
if (temp == NULL) {
return 1;
}
free(temp);
return 0;
}

void enqueue(int value) {


if (isFull()) {
printf("Queue is FULL! Cannot enqueue %d\n", value);
return;
}

struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));


newNode->data = value;
newNode->next = NULL;

if (isEmpty()) {
frontPtr = rearPtr = newNode;
} else {
rearPtr->next = newNode;
rearPtr = newNode;
}

printf("%d enqueued to queue.\n", value);


}

void dequeue() {
if (isEmpty()) {
printf("Queue is EMPTY! Cannot dequeue.\n");
return;
}

struct Node* temp = frontPtr;


printf("%d dequeued from queue.\n", frontPtr->data);
frontPtr = frontPtr->next;

if (frontPtr == NULL)
rearPtr = NULL;

free(temp);
}

void front() {
if (isEmpty()) {
printf("Queue is EMPTY! No front element.\n");
} else {
printf("Front element is: %d\n", frontPtr->data);
}
}

void display() {
if (isEmpty()) {
printf("Queue is EMPTY!\n");
return;
}

printf("Queue elements: ");


struct Node* temp = frontPtr;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}

int main() {
int choice, value;

while (1) {
printf("\n--- Queue Menu (Linked List) ---\n");
printf("1. Enqueue\n2. Dequeue\n3. Front\n4. Is Full\n5. Is Empty\n6. Display\n7. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);

switch (choice) {
case 1:
printf("Enter value to enqueue: ");
scanf("%d", &value);
enqueue(value);
break;
case 2:
dequeue();
break;
case 3:
front();
break;
case 4:
if (isFull())
printf("Queue is FULL (No Memory)!\n");
else
printf("Queue is NOT full.\n");
break;
case 5:
if (isEmpty())
printf("Queue is EMPTY!\n");
else
printf("Queue is NOT empty.\n");
break;
case 6:
display();
break;
case 7:
printf("Exiting program.\n");
return 0;
default:
printf("Invalid choice! Please try again.\n");
}
}
}

OUTPUT:
--- Queue Menu (Linked List) ---
1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 1
Enter value to enqueue: 5
5 enqueued to queue.

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 1
Enter value to enqueue: 10
10 enqueued to queue.

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 2
5 dequeued from queue.

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 3
Front element is: 10

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 4
Queue is NOT full.

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 5
Queue is NOT empty.

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 6
Queue elements: 10

--- Queue Menu (Linked List) ---


1. Enqueue
2. Dequeue
3. Front
4. Is Full
5. Is Empty
6. Display
7. Exit
Enter your choice: 7
Exiting program.

You might also like