0% found this document useful (0 votes)
30 views14 pages

Activity4 1341

The document discusses queue data structures implemented using arrays and linked lists. It includes code implementations of queue using arrays and linked lists with functions to enqueue, dequeue, print the queue and check if it is empty. It also includes driver code to test the queue implementations.

Uploaded by

maryammunawar110
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views14 pages

Activity4 1341

The document discusses queue data structures implemented using arrays and linked lists. It includes code implementations of queue using arrays and linked lists with functions to enqueue, dequeue, print the queue and check if it is empty. It also includes driver code to test the queue implementations.

Uploaded by

maryammunawar110
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

QNO1(ARRAYS)

#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 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 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 Enqueue(int item) {


if (rearIdx == maxSize - 1) {
cout << "Queue is full. Cannot enqueue." << endl;
return;
}
if (isEmpty()) {
frontIdx = 0;
}
rearIdx++;
arr[rearIdx] = item;
size++;
}

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;
}

You might also like