#include "bits/stdc++.h"
using namespace std;
class Node {
public:
int data;
Node *next;
Node(int d) : data(d), next(NULL) {}
};
class LinkedList {
private:
Node *head;
public:
LinkedList() : head(nullptr) {}
~LinkedList() {
Node *curr = head;
while(curr != NULL) {
Node *nextNode = curr->next;
delete curr;
curr = nextNode;
}
}
void insertAtHead(int data) {
Node *tempNode = new Node(data);
tempNode->next = head;
head = tempNode;
}
void printList() {
Node *currNode = head;
if (currNode == nullptr) {
cout << "Empty List" << endl;
return;
}
while(currNode != nullptr){
cout << currNode->data << " ==> ";
currNode = currNode->next;
}
cout << "NULL" << endl;
}
void deleteNode(int key) {
// 1. List is empty
if(head == nullptr) {
return;
}
// 2. Delete head node
if (head->data == key) {
Node *tempNode = head;
head = head->next;
delete tempNode;
return;
}
// 3. Delete last node
Node *curr = head;
Node *prev = nullptr;
while (curr != nullptr && curr->data != key) {
prev = curr;
curr = curr->next;
}
if (curr == nullptr)
return;
prev->next = curr->next;
delete curr;
}
};
int main() {
LinkedList ll;
ll.insertAtHead(30);
ll.insertAtHead(20);
ll.insertAtHead(10);
cout << "Elements in Linked List: ";
ll.printList(); // Output: Elements in Linked List: 10 20 30
ll.deleteNode(20);
cout << "Elements in Linked List: ";
ll.printList(); // Output: Elements in Linked List: 10 30
return 0;
}
Comments
Post a Comment