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.