diff --git a/data-structures/linkedList.cpp b/data-structures/linkedList.cpp index 33ef17b..6a8af7c 100644 --- a/data-structures/linkedList.cpp +++ b/data-structures/linkedList.cpp @@ -33,6 +33,38 @@ class LinkedList { } currentNode->next = newNode; } + void deleteNode(int key) { + if (head == NULL) { + cout << "List is empty. Nothing to delete." << endl; + return; + } + + // If head node itself holds the key + if (head->data == key) { + Node* temp = head; + head = head->next; + delete temp; + return; + } + + // Find the node to be deleted + Node* current = head; + Node* prev = NULL; + while (current != NULL && current->data != key) { + prev = current; + current = current->next; + } + + // If key was not present + if (current == NULL) { + cout << "Node with value " << key << " not found." << endl; + return; + } + + // Unlink the node from linked list + prev->next = current->next; + delete current; + } void printList() { Node* currentNode = this->head;