0% found this document useful (0 votes)
21 views

Assignment 2 DSA

none

Uploaded by

sm0063694
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

Assignment 2 DSA

none

Uploaded by

sm0063694
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Assignment 2

DSA

Array Class Implementation for List, Stack, and Queue ADTs


CODE:
#include <iostream>
class Array {
private:
int *arr;
int capacity;
int size;
public:
//ARRAY CONSTRUCTOR
Array(int capacity) : capacity(capacity), size(0) {
arr = new int[capacity];
}
//ARRAY DESTRUCTOR

~Array() {
delete[] arr;
}

//FUNCTION OF INSERTING ELEMENT IN THE END OF ARRAY


void insert(int element) {
if (size < capacity) {
arr[size++] = element;
} else {
std::cout << "Array is full. Cannot insert element.\n";
}
}

//FUNCTION FOR DELETING AN ELEMENT


void removeAt(int index) {
if (index < 0 || index >= size) {
std::cout << "Invalid index. Cannot remove element.\n";
} else {
for (int i = index; i < size - 1; ++i) {
arr[i] = arr[i + 1];
}
--size;
}
}

//ELEMENT RETRIEVAL FUNCTION


int getAt(int index) const {
if (index < 0 || index >= size) {
std::cout << "Invalid index. Returning -1.\n";
return -1; //IF INDEX NOT FOUND
} else {
return arr[index];
}
}

// Function to check if the array is empty


bool isEmpty() const {
return size == 0;
}

//GETTING ARRAY SIZE FUNCTION


int getSize() const {
return size;
}
};

//LIST CLASS USING ARRAY


class List : public Array {
public:
using Array::Array; // Inherit constructor

//FUNCTION TO INSERT AN ELEMENT


void insertAt(int index, int element) {
if (index < 0 || index > getSize()) {
std::cout << "Invalid index. Cannot insert element.\n";
} else {
//MAKE NEW SACE FOR ELEMENT
for (int i = getSize(); i > index; --i) {
Array::insert(getAt(i - 1));
}
//INSERTING NEW ELEMENT
Array::insert(element);
}
}

// FUNTION FOR DELETING ELEMENT AT SECIFIC INDEX


void deleteAt(int index) {
Array::removeAt(index);
}
};

//STACK USING ARRAY


class Stack : public Array {
public:
using Array::Array;

//FUNCTION TO PUSH ELEMENT IN STACK


void push(int element) {
Array::insert(element);
}
//FUNCTION TO POP ELEMENT IN STACK

void pop() {
Array::removeAt(getSize() - 1);
}

//FUNCTION TO GET TOP ELEMENT


int peek() const {
return Array::getAt(getSize() - 1);
}
};

//QUEUE USING ARRAY


class Queue : public Array {
public:
using Array::Array; // Inherit constructor

//ENQUEUE AN ELEMENT FUNCTION


void enqueue(int element) {
Array::insert(element);
}
//DEQUEUE AN ELEMENT FUNCTION
void dequeue() {
Array::removeAt(0);
}

//FUNCTION TO GET FRONT ELEMENT OF QUEUE

int front() const {


return Array::getAt(0);
}
};

int main() {
//ARRAY DEMONSTRATION
Array arr(5);
arr.insert(10);
arr.insert(20);
arr.insert(30);

std::cout << "Array: ";


for (int i = 0; i < arr.getSize(); ++i) {
std::cout << arr.getAt(i) << " ";
}
std::cout << "\n\n";

//LIST DEMONSTRATION
List myList(5);
myList.insert(10);
myList.insert(20);
myList.insert(30);

std::cout << "List: ";


for (int i = 0; i < myList.getSize(); ++i) {
std::cout << myList.getAt(i) << " ";
}
std::cout << "\n\n";

//STACK DEMONSTRATION
Stack myStack(5);
myStack.push(10);
myStack.push(20);
myStack.push(30);

std::cout << "Stack (Top to Bottom): ";


while (!myStack.isEmpty()) {
std::cout << myStack.peek() << " ";
myStack.pop();
}
std::cout << "\n\n";

// QUEUE DEMONSTRATION

Queue myQueue(5);
myQueue.enqueue(10);
myQueue.enqueue(20);
myQueue.enqueue(30);

std::cout << "Queue (Front to Rear): ";


while (!myQueue.isEmpty()) {
std::cout << myQueue.front() << " ";
myQueue.dequeue();
}
std::cout << "\n\n";

return 0;
}
OUTPUT:
Array: 10 20 30
List: 10 20 30
Stack (Top to Bottom): 30 20 10
Queue (Front to Rear): 10 20 30

You might also like