LINK LIST ALL OPERATIONS LAB TASK 6
LINK LIST ALL OPERATIONS LAB TASK 6
Section: 2312134
Course: DSA LAB
LAB TASK-3
(Q1)
Code:
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
};
class LinkedList {
private:
Node* head;
int count;
public:
LinkedList() : head(nullptr), count(0) {}
void insertFront(int val) {
if (count >= 10) {
cout << "Error: List is full.\n";
return;
}
Node* newNode = new Node();
newNode->data = val;
newNode->next = head;
head = newNode;
count++;
}
void insertEnd(int val) {
if (count >= 10) {
cout << "Error: List is full.\n";
return;
}
Node* newNode = new Node();
newNode->data = val;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
count++;
}
void insertAfter(int after, int val) {
if (count >= 10) {
cout << "Error: List is full.\n";
return;
}
Node* temp = head;
while (temp != nullptr && temp->data != after) {
temp = temp->next;
}
if (temp == nullptr) {
cout << "Number " << after << " not found.\n";
} else {
Node* newNode = new Node();
newNode->data = val;
newNode->next = temp->next;
temp->next = newNode;
count++;
}
}
void deleteFront() {
if (head == nullptr) {
cout << "List is empty.\n";
return;
}
Node* temp = head;
head = head->next;
delete temp;
count--;
}
void deleteEnd() {
if (head == nullptr) {
cout << "List is empty.\n";
return;
}
if (head->next == nullptr) {
delete head;
head = nullptr;
} else {
Node* temp = head;
while (temp->next->next != nullptr) {
temp = temp->next;
}
delete temp->next;
temp->next = nullptr;
}
count--;
}
void deleteValue(int val) {
if (head == nullptr) {
cout << "List is empty.\n";
return;
}
if (head->data == val) {
Node* temp = head;
head = head->next;
delete temp;
count--;
return;
}
Node* temp = head;
while (temp->next != nullptr && temp->next->data != val) {
temp = temp->next;
}
if (temp->next == nullptr) {
cout << "Number " << val << " not found.\n";
} else {
Node* nodeToDelete = temp->next;
temp->next = nodeToDelete->next;
delete nodeToDelete;
count--;
}
}
void display() {
if (head == nullptr) {
cout << "List is empty.\n";
return;
}
Node* temp = head;
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
};
int main() {
LinkedList list;
list.insertFront(10);
list.insertEnd(20);
list.insertEnd(30);
list.insertAfter(20, 25);
list.display();
list.deleteFront();
list.display();
list.deleteEnd();
list.display();
list.deleteValue(25);
list.display();
return 0;
}
Output:
(Q2)
Code:
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
};
class LinkedList {
private:
Node* head;
int count;
public:
LinkedList() : head(nullptr), count(0) {}
void sortDescending() {
if (head == nullptr) return;
list.insertFront(50);
list.insertEnd(40);
list.insertEnd(60);
list.insertEnd(20);
list.display();
cout << "Node count: " << list.countNodes() << endl;
list.sortDescending();
list.display();
return 0;
}
Output: