DSA
DSA
Ans –
#include <iostream>
Return;
Return;
Arr[position] = element;
Size++;
Return;
}
For (int i = position; i < size – 1; i++) {
Size--;
Int main() {
Int arr[MAX_SIZE];
Int size = 0;
// Inserting elements
// Deleting an element
Return 0;
}
[04/07, 23:39] Ashutosh K: 2. To search an element and print the total time of occurrence in the
array.
Ans –
#include <iostream>
Int count = 0;
If (arr[i] == element) {
Count++;
Return count;
Int main() {
Int size = 7;
Int element;
If (count > 0) {
Std::cout << “Element found “ << count << “ time(s) in the array.” << std::endl;
} else {
Std::cout << “Element not found in the array.” << std::endl;
Return 0;
Ans –
#include <iostream>
Int newSize = 0;
If (arr[i] != element) {
Arr[newSize] = arr[i];
newSize++;
Size = newSize;
Int main() {
Int arr[MAX_SIZE
// ...
Int size = 7;
Return 0;
Ans –
#include <iostream>
Class Stack {
Private:
Int top;
Int arr[MAX_SIZE];
Public:
Stack() {
Top = -1;
If (top == MAX_SIZE – 1) {
Return;
Arr[++top] = element;
Void pop() {
If (top == -1) {
Return;
Top--;
Int peek() {
If (top == -1) {
Return -1;
Return arr[top];
}
Bool isEmpty() {
Bool isFull() {
};
Int main() {
Stack stack;
// Pushing elements
Stack.push(10);
Stack.push(20);
Stack.push(30);
// Popping elements
Stack.pop();
// Peeking element
If (topElement != -1) {
Return 0;
#include <iostream>
Class Queue {
Private:
Int arr[MAX_SIZE];
Public:
Queue() {
Front = -1;
Rear = -1;
If (rear == MAX_SIZE – 1) {
Return;
Arr[++rear] = element;
If (front == -1) {
Front = 0;
Void dequeue() {
If (front == -1 || front > rear) {
Return;
Front++;
Front = -1;
Rear = -1;
Int peek() {
Return -1;
Return arr[front];
Bool isEmpty() {
Bool isFull() {
}
};
Int main() {
Queue queue;
// Enqueuing elements
Queue.enqueue(10);
Queue.enqueue(20);
Queue.enqueue(30);
// Dequeuing elements
Queue.dequeue();
// Peeking element
If (frontElement != -1) {
Return 0;
Ans –
#include <iostream>
Class CircularQueue {
Private:
Int arr[MAX_SIZE];
Public:
CircularQueue() {
Front = -1;
Rear = -1;
Std::cout << “Circular Queue Overflow! Cannot enqueue element.” << std::endl;
Return;
If (front == -1) {
Front = 0;
Rear = 0;
Rear = 0;
} else {
Rear++;
Arr[rear] = element;
Void dequeue() {
If (front == -1) {
Std::cout << “Circular Queue Underflow! Cannot dequeue element.” << std::endl;
Return;
}
If (front == rear) {
Front = -1;
Rear = -1;
Front = 0;
} else {
Front++;
Int peek() {
If (front == -1) {
Return -1;
Return
// ...
If (peekElement != -1) {
Return 0;
[04/07, 23:45] Ashutosh K: 7. To implement linear linked list and perform different operation such as
node insert and delete, search of an item, reverse the list.
Ans –
#include <iostream>
Struct Node {
Int data;
Node* next;
};
Class LinkedList {
Private:
Node* head;
Public:
LinkedList() {
Head = nullptr;
newNode->data = data;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Temp = temp->next;
Temp->next = newNode;
}
Std::cout << “Node inserted successfully!” << std::endl;
If (head == nullptr) {
Return;
Head = temp->next;
Delete temp;
Return;
Prev = temp;
Temp = temp->next;
If (temp == nullptr) {
Std::cout << “Node with data “ << data << “ not found! Cannot delete node.” << std::endl;
Return;
Prev->next = temp->next;
Delete temp;
Std::cout << “Node deleted successfully!” << std::endl;
If (temp->data == data) {
Return true;
Temp = temp->next;
Return false;
Void reverseList() {
Next = current->next;
Current->next = prev;
Prev = current;
Current = next;
Head = prev;
Void displayList() {
If (head == nullptr) {
Return;
Temp = temp->next;
};
Int main() {
LinkedList list;
// Inserting nodes
List.insertNode(10);
List.insertNode(20);
List.insertNode(30);
// Deleting a node
List.deleteNode(20);
// Searching a node
} else {
Std::endl;
List.reverseList();
List.displayList();
Return 0;
[04/07, 23:46] Ashutosh K: 8. To implement circular linked list and perform different operation such
as node insert and delete.
Ans –
#include <iostream>
Struct Node {
Int data;
Node* next;
};
Class CircularLinkedList {
Private:
Node* head;
Public:
CircularLinkedList() {
Head = nullptr;
newNode->data = data;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
head->next = head;
} else {
Temp = temp->next;
Temp->next = newNode;
newNode->next = head;
If (head == nullptr) {
Return;
Temp = temp->next;
Temp->next = head->next;
Delete head;
Head = temp->next;
Return;
Prev = temp;
Temp = temp->next;
If (temp == head) {
Std::cout << “Node with data “ << data << “ not found! Cannot delete node.” << std::endl;
Return;
Prev->next = temp->next;
Delete temp;
Void displayList() {
If (head == nullptr) {
Return;
}
Do {
Temp = temp->next;
};
Int main() {
CircularLinkedList list;
// Inserting nodes
List.insertNode(10);
List.insertNode(20);
List.insertNode(30);
// Deleting a node
List.deleteNode(20);
List.displayList();
Return 0;
[04/07, 23:47] Ashutosh K: 9. To implement double linked list and perform different operation such
as node insert and delete.
Ans –
#include <iostream>
Struct Node {
Int data;
Node* prev;
Node* next;
};
Class DoublyLinkedList {
Private:
Node* head;
Public:
DoublyLinkedList() {
Head = nullptr;
newNode->data = data;
newNode->prev = nullptr;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node*
Temp = temp->next;
}
Temp->next = newNode;
newNode->prev = temp;
If (head == nullptr) {
Return;
Temp = temp->next;
If (temp == nullptr) {
Std::cout << “Node with data “ << data << “ not found! Cannot delete node.” << std::endl;
Return;
If (temp == head) {
Head = temp->next;
If (head != nullptr) {
Head->prev = nullptr;
} else {
Temp->prev->next = temp->next;
If (temp->next != nullptr) {
Temp->next->prev = temp->prev;
}
}
Delete temp;
Void displayList() {
If (head == nullptr) {
Return;
Temp = temp->next;
};
Int main() {
DoublyLinkedList list;
// Inserting nodes
List.insertNode(10);
List.insertNode(20);
List.insertNode(30);
// Deleting a node
List.deleteNode(20);
List.displayList();
Return 0;
Ans –
#include <iostream>
Struct Node {
Int data;
Node* next;
};
Class Stack {
Private:
Node* top;
Public:
Stack() {
Top = nullptr;
newNode->data = data;
newNode->next = top;
top = newNode;
Void pop() {
If (top == nullptr) {
Return;
Top = top->next;
Delete temp;
Int peek() {
If (top == nullptr) {
Return -1;
Return top->data;
Bool isEmpty() {
};
Int main() {
Stack stack;
// Pushing elements
Stack.push(10);
Stack.push(20);
Stack.push(30);
// Popping an element
Stack.pop();
// Peeking element
If (topElement != -1) {
Return 0;
Ans –
#include <iostream>
Struct Node {
Int data;
Node* next;
};
Class Queue {
Private:
Node* front;
Node* rear;
Public:
Queue() {
Front = nullptr;
Rear = nullptr;
newNode->data = data;
newNode->next = nullptr;
if (rear == nullptr) {
front = newNode;
rear = newNode;
} else {
Rear->next = newNode;
Rear = newNode;
Void dequeue() {
If (front == nullptr) {
Return;
Front = front->next;
If (front == nullptr) {
Rear = nullptr;
Delete temp;
Int peek() {
If (front == nullptr) {
Return -1;
Return front->data;
Bool isEmpty() {
};
Int main() {
Queue queue;
// Enqueuing elements
Queue.enqueue(10);
Queue.enqueue(20);
Queue.enqueue(30);
// Dequeuing an element
Queue.dequeue();
// Peeking element
If (frontElement != -1) {
Return 0;
Ans –
#include <iostream>
Struct Node {
Int coefficient;
Int exponent;
Node* next;
};
Class Polynomial {
Private:
Node* head;
Public:
Polynomial() {
Head = nullptr;
newNode->coefficient = coefficient;
newNode->exponent = exponent;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Temp = temp->next;
Temp->next = newNode;
Void displayPolynomial() {
If (head == nullptr) {
Return;
Temp = temp->next;
};
Int main() {
Polynomial polynomial;
Polynomial.addTerm(3, 2);
Polynomial.addTerm(-2, 1);
Polynomial.addTerm(5, 0);
Polynomial.displayPolynomial();
Return 0;
Ans –
#include <iostream>
Struct Node {
Int data;
Node* left;
Node* right;
};
Class BinarySearchTree {
Private:
Node* root;
Public:
BinarySearchTree() {
Root = nullptr;
}
newNode->data = data;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
If (node == nullptr) {
Return createNode(data);
Return node;
} else {
If (result != nullptr) {
Std::cout << “Node with data “ << data << “ found in the tree.” << std::endl;
} else {
Std::cout << “Node with data “ << data << “ not found in the tree.” << std::endl;
If (node == nullptr) {
Return;
inorderTraversal(node->left);
inorderTraversal(node->right);
Void displayInorder() {
If (root == nullptr) {
Std::cout << “Tree is empty!” << std::endl;
Return;
inorderTraversal(root);
Node = node->left;
Return node;
If (node == nullptr) {
Return node;
} else {
If (node->left == nullptr) {
Delete node;
Return temp;
Delete node;
Return temp;
Node->data = temp->data;
Return node;
};
Int main() {
BinarySearchTree bst;
// Inserting nodes
Bst.insert(50);
Bst.insert(30);
Bst.insert(70);
Bst.insert(20);
Bst.insert(40);
// Searching nodes
Bst.search(40);
Bst.search(60);
// Displaying tree
Bst.displayInorder();
// Removing a node
Bst.remove(30);
Bst.displayInorder();
Return 0;
Ans –
#include <iostream>
Class SparseMatrix {
Private:
Int matrix[MAX_SIZE][3];
Public:
Void readMatrix() {
Int element;
If (element != 0) {
Matrix[numTerms][0] = i;
Matrix[numTerms][1] = j;
Matrix[numTerms][2] = element;
numTerms++;
Void displayMatrix() {
Cout << matrix[i][0] << “\t” << matrix[i][1] << “\t” << matrix[i][2] << endl;
};
Int main() {
Cout << “Enter the number of rows and columns of the matrix: “;
sparseMatrix.readMatrix();
sparseMatrix.displayMatrix();
return 0;
Ans –
#include <iostream>
Int left = 0;
If (arr[mid] == target) {
Return mid;
Left = mid + 1;
} else {
Right = mid – 1;
Return -1;
Int main() {
If (index != -1) {
} else {
Return 0;
Ans –
#include <iostream>
Class Queue {
Private:
Int arr[MAX_SIZE];
Public:
Queue() {
Front = -1;
Rear = -1;
}
Bool isEmpty() {
Bool isFull() {
If (isFull()) {
Return;
If (isEmpty()) {
Front = 0;
Rear++;
Arr[rear] = element;
Int dequeue() {
If (isEmpty()) {
Return -1;
Front = -1;
Rear = -1;
} else {
Front++;
Return dequeuedElement;
Void displayQueue() {
If (isEmpty()) {
Return;
Void bubbleSort() {
If (isEmpty()) {
Cout << “Queue is empty. Cannot perform Bubble Sort.” << endl;
Return;
Arr[j + 1] = temp;
Cout << “Bubble Sort has been performed on the queue.” << endl;
};
Int main() {
Queue queue;
// Enqueuing elements
Queue.enqueue(5);
Queue.enqueue(10);
Queue.enqueue(3);
Queue.enqueue(8);
Queue.displayQueue();
Queue.bubbleSort();
Return 0;
Ans –
#include <iostream>
Class Stack {
Private:
Int top;
Int arr[MAX_SIZE];
Public:
Stack() {
Top = -1;
Bool isEmpty() {
Bool isFull() {
If (isFull()) {
Cout << “Stack is full. Cannot push element.” << endl;
Return;
Top++;
Arr[top] = element;
Int pop() {
If (isEmpty()) {
Return -1;
Top--;
Return poppedElement;
Void displayStack() {
If (isEmpty()) {
Return;
Void selectionSort() {
If (isEmpty()) {
Cout << “Stack is empty. Cannot perform Selection Sort.” << endl;
Return;
Int n = top + 1;
Int minIndex = i;
minIndex = j;
Arr[i] = arr[minIndex];
Arr[minIndex] = temp;
Cout << “Selection Sort has been performed on the stack.” << endl;
};
Int main() {
Stack stack;
// Pushing elements
Stack.push(5);
Stack.push(10);
Stack.push(3);
Stack.push(8);
Stack.displayStack();
Stack.selectionSort();
Stack.displayStack();
Return 0;
Ans –
#include <iostream>
Class CircularQueue {
Private:
Int arr[MAX_SIZE];
Public:
CircularQueue() {
Front = -1;
Rear = -1;
Bool isEmpty() {
Bool isFull() {
If (isFull()) {
Return;
If (isEmpty()) {
Front = 0;
Arr[rear] = element;
Int dequeue() {
If (isEmpty()) {
Return -1;
}
If (front == rear) {
Front = -1;
Rear = -1;
} else {
Return dequeuedElement;
Void displayQueue() {
If (isEmpty()) {
Return;
Int i = front;
While (i != rear) {
I = (i + 1) % MAX_SIZE;
Void insertionSort() {
If (isEmpty()) {
Cout << “Queue is empty. Cannot perform Insertion Sort.” << endl;
Return;
Int j = i – 1;
J = (j – 1 + MAX_SIZE) % MAX_SIZE;
Cout << “Insertion Sort has been performed on the circular queue.” << endl;
};
Int main() {
CircularQueue queue;
// Enqueuing elements
Queue.enqueue(5);
Queue.enqueue(10);
Queue.enqueue(3);
Queue.enqueue(8);
Cout << “Before sorting:” << endl;
Queue.displayQueue();
Queue.insertionSort();
Queue.displayQueue();
Return 0;
Ans –
#include <iostream>
Class Node {
Public:
Int data;
Node* next;
Node(int value) {
Data = value;
Next = nullptr;
};
Class LinkedList {
Private:
Node* head;
Public:
LinkedList() {
Head = nullptr;
If (head == nullptr) {
Head = newNode;
} else {
Temp = temp->next;
Temp->next = newNode;
Void displayList() {
If (head == nullptr) {
Return;
Temp = temp->next;
}
Cout << endl;
Node* getTailNode() {
If (head == nullptr) {
Return nullptr;
Temp = temp->next;
Return temp;
Node* i = low->next;
Swap(i->data, j->data);
I = i->next;
Swap(i->data, high->data);
Return i;
Prev = prev->next;
quickSort(low, prev);
quickSort(pivot->next, high);
Void performQuickSort() {
quickSort(head, tail);
cout << “Quick Sort has been performed on the linked list.” << endl;
};
Int main() {
LinkedList list;
List.insertNode(5);
List.insertNode(10);
List.insertNode(3);
List.insertNode(8);
List.displayList();
// Performing Quick Sort
List.performQuickSort();
List.displayList();
Return 0;
Ans –
#include <iostream>
Class Stack {
Private:
Int top;
Int arr[MAX_SIZE];
Public:
Stack() {
Top = -1;
Bool isEmpty() {
Bool isFull() {
Return (top == MAX_SIZE – 1);
If (isFull()) {
Return;
Arr[++top] = element;
Int pop() {
If (isEmpty()) {
Return -1;
Return arr[top--];
Int peek() {
If (isEmpty()) {
Return -1;
Return arr[top];
Void displayStack() {
If (isEmpty()) {
Return;
Int i = 0, j = 0, k = 0;
Arr[k++] = left[i++];
} else {
Arr[k++] = right[j++];
Arr[k++] = left[i++];
Arr[k++] = right[j++];
}
Void mergeSort(int input[], int size) {
If (size < 2) {
Return;
Int left[mid];
Left[i] = input[i];
mergeSort(left, mid);
Void performMergeSort() {
Int size;
Int input[size];
Cout << “Enter the elements of the array: “;
mergeSort(input, size);
cout << “Merge Sort has been performed on the array.” << endl;
};
Int main() {
Stack stack;
Stack.performMergeSort();
Return 0;