From b0d0550edc9581fd2fe125153e06ed848b08ab19 Mon Sep 17 00:00:00 2001 From: Vaibhav Jaiswal Date: Mon, 17 Oct 2022 00:05:42 +0530 Subject: [PATCH] Deletion_in_linkedlist --- C++/Deletion_in_linkedlist.cpp | 105 +++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 C++/Deletion_in_linkedlist.cpp diff --git a/C++/Deletion_in_linkedlist.cpp b/C++/Deletion_in_linkedlist.cpp new file mode 100644 index 0000000..4f571c5 --- /dev/null +++ b/C++/Deletion_in_linkedlist.cpp @@ -0,0 +1,105 @@ +// A complete working C++ program to +// demonstrate deletion in singly +// linked list with class +#include +using namespace std; + +// A linked list node +class Node { +public: + int data; + Node* next; +}; + +// Given a reference (pointer to pointer) +// to the head of a list and an int, +// inserts a new node on the front of the +// list. +void push(Node** head_ref, int new_data) +{ + Node* new_node = new Node(); + new_node->data = new_data; + new_node->next = (*head_ref); + (*head_ref) = new_node; +} + +// Given a reference (pointer to pointer) +// to the head of a list and a key, deletes +// the first occurrence of key in linked list +void deleteNode(Node** head_ref, int key) +{ + + // Store head node + Node* temp = *head_ref; + Node* prev = NULL; + + // If head node itself holds + // the key to be deleted + if (temp != NULL && temp->data == key) { + + // Changed head + *head_ref = temp->next; + + // free old head + delete temp; + return; + } + + // Else Search for the key to be + // deleted, keep track of the + // previous node as we need to + // change 'prev->next' + else { + while (temp != NULL && temp->data != key) { + prev = temp; + temp = temp->next; + } + + // If key was not present in linked list + if (temp == NULL) + return; + + // Unlink the node from linked list + prev->next = temp->next; + + // Free memory + delete temp; + } +} + +// This function prints contents of +// linked list starting from the +// given node +void printList(Node* node) +{ + while (node != NULL) { + cout << node->data << " "; + node = node->next; + } +} + +// Driver code +int main() +{ + + // Start with the empty list + Node* head = NULL; + + // Add elements in linked list + push(&head, 7); + push(&head, 1); + push(&head, 3); + push(&head, 2); + + puts("Created Linked List: "); + printList(head); + + deleteNode(&head, 1); + puts("\nLinked List after Deletion of 1: "); + + printList(head); + + return 0; +} + +