Activity4 1341
Activity4 1341
#include <iostream>
using namespace std;
class LinkedQueue {
private:
struct Node {
int data;
Node* next;
};
Node* Front;
Node* Rear;
const int maxSize;
int* arr;
int frontIdx;
int rearIdx;
int size;
public:
LinkedQueue(int size = 100) : maxSize(size), frontIdx(0), rearIdx(-1), size(0) {
arr = new int[maxSize];
Front = NULL;
Rear = NULL;
}
~LinkedQueue() {
delete[] arr;
}
bool IsEmpty() {
return size == 0;
}
void Enqueue(int item) {
if (size == maxSize) {
cout << "Queue is full. Cannot enqueue." << endl;
return;
}
rearIdx = (rearIdx + 1) % maxSize;
arr[rearIdx] = item;
size++;
}
void Dequeue() {
if (IsEmpty()) {
cout << "Queue is empty. Cannot dequeue." << endl;
return;
}
frontIdx = (frontIdx + 1) % maxSize;
size--;
}
void PrintQueue() {
if (IsEmpty()) {
cout << "Queue is empty." << endl;
return;
}
int idx = frontIdx;
for (int i = 0; i < size; i++) {
cout << arr[idx] << " ";
idx = (idx + 1) % maxSize;
}
cout << endl;
}
int GetFront() {
if (IsEmpty()) {
cout << "Queue is empty. No front element." << endl;
return -1;
}
return arr[frontIdx];
}
};
int main() {
LinkedQueue queue(5);
queue.Enqueue(10);
queue.Enqueue(20);
queue.Enqueue(30);
queue.PrintQueue();
queue.Dequeue();
queue.PrintQueue();
cout << "Front element: " << queue.GetFront() << endl;
return 0;
}
QNO1(LINK-LIST)
#include <iostream>
using namespace std;
class LinkedQueue {
private:
struct Node {
int data;
Node* next;
};
Node* Front;
Node* Rear;
public:
LinkedQueue() : Front(NULL), Rear(NULL) {}
void Enqueue(int item) {
Node* newNode = new Node;
newNode->data = item;
newNode->next = NULL;
if (isEmpty()) {
Front = newNode;
Rear = newNode;
} else {
Rear->next = newNode;
Rear = newNode;
}
}
void Dequeue() {
if (isEmpty()) {
cout << "Queue is empty. Cannot dequeue." << endl;
return;
}
Node* temp = Front;
Front = Front->next;
delete temp;
if (isEmpty()) {
Rear = NULL;
}
}
void PrintQueue() {
if (isEmpty()) {
cout << "Queue is empty." << endl;
return;
}
Node* current = Front;
while (current != NULL) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
bool isEmpty() {
return Front == NULL;
}
int GetFront() {
if (isEmpty()) {
cout << "Queue is empty. No front element." << endl;
return -1; // Or throw an exception
}
return Front->data;
}
~LinkedQueue() {
while (Front != NULL) {
Node* temp = Front;
Front = Front->next;
delete temp;
}
Rear = NULL;
}
};
int main() {
LinkedQueue queue;
queue.Enqueue(10);
queue.Enqueue(20);
queue.Enqueue(30);
queue.PrintQueue();
queue.Dequeue();
queue.PrintQueue();
cout << "Front element: " << queue.GetFront() << endl;
return 0;
}
QNO2
#include <iostream>
using namespace std;
class LinkedQueue {
private:
struct Node {
int data;
Node* next;
};
Node* Front;
Node* Rear;
public:
LinkedQueue() : Front(NULL), Rear(NULL) {}
void PrintQueue() {
if (isEmpty()) {
cout << "Queue is empty." << endl;
return;
}
Node* current = Front;
while (current != NULL) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
bool isEmpty() {
return Front == NULL;
}
int GetFront() {
if (isEmpty()) {
cout << "Queue is empty. No front element." << endl;
return -1; // Or throw an exception
}
return Front->data;
}
~LinkedQueue() {
while (Front != NULL) {
Node* temp = Front;
Front = Front->next;
delete temp;
}
Rear = NULL;
}
};
int main() {
LinkedQueue lst;
lst.PrintQueue();
lst.Enqueue(100);
lst.PrintQueue();
lst.Enqueue(200);
lst.PrintQueue();
lst.Enqueue(300);
lst.PrintQueue();
lst.Enqueue(400);
lst.PrintQueue();
cout << "The Front element is " << lst.GetFront() << "\n\n";
return 0;
}
QNO3
#include <iostream>
using namespace std;
class Queue {
private:
int maxSize;
int* arr;
int frontIdx;
int rearIdx;
int size;
public:
Queue(int size = 100) : maxSize(size), frontIdx(-1), rearIdx(-1), size(0) {
arr = new int[maxSize];
}
~Queue() {
delete[] arr;
}
void Dequeue() {
if (isEmpty()) {
cout << "Queue is empty. Cannot dequeue." << endl;
return;
}
frontIdx++;
size--;
if (frontIdx > rearIdx) {
frontIdx = rearIdx = -1;
}
}
void DisplayQueue() {
if (isEmpty()) {
cout << "Queue is empty." << endl;
return;
}
cout << "Queue elements: ";
for (int i = frontIdx; i <= rearIdx; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
bool isEmpty() {
return size == 0;
}
};
int main() {
Queue queue;
int choice;
int element;
do {
cout << "\nMenu:\n";
cout << "1. Insert Element into Queue\n";
cout << "2. Delete element from queue\n";
cout << "3. Display the queue\n";
cout << "4. Exit\n";
cout << "Enter your choice: ";
cin >> choice;
switch (choice) {
case 1:
cout << "Enter element to enqueue: ";
cin >> element;
queue.Enqueue(element);
break;
case 2:
queue.Dequeue();
break;
case 3:
queue.DisplayQueue();
break;
case 4:
cout << "Exiting program.\n";
break;
default:
cout << "Invalid choice. Please try again.\n";
}
} while (choice != 4);
return 0;
}