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

Assignment 2 DSA

none

Uploaded by

sm0063694
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)
21 views

Assignment 2 DSA

none

Uploaded by

sm0063694
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/ 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