#include <iostream>
struct Node {
int data;
Node* next;
};
void deleteNode(Node*& head, int key) {
Node* temp = head;
Node* prev = nullptr;
if (temp != nullptr && temp->data == key) {
head = temp->next;
delete temp;
return;
}
while (temp != nullptr && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == nullptr)
return;
prev->next = temp->next;
delete temp;
}
void printList(Node* node) {
while (node != nullptr) {
std::cout << node->data << " ";
node = node->next;
}
std::cout << std::endl;
}
int main() {
Node* head = new Node{1, nullptr};
head->next = new Node{2, nullptr};
head->next->next = new Node{3, nullptr};
head->next->next->next = new Node{4, nullptr};
std::cout << "Original Linked List: ";
printList(head);
int keyToDelete = 3;
deleteNode(head, keyToDelete);
std::cout << "Linked List after deleting node with data " << keyToDelete << ": ";
printList(head);
return 0;
}