Delete last occurrence of an item from linked list

14 Jun, 2022
Using pointers, loop through the whole list and keep track of the node prior to the node containing the last occurrence key using a special pointer. After this just store the next of next of the special pointer, into to next of special pointer to remove the required node from the linked list.
C++
C
Java
Python3
Javascript
#include <iostream>#include <bits/stdc++.h>using namespace std; // A linked list Nodestruct Node{    int data;    struct Node* next;}; // Function to delete the last occurrencevoid deleteLast(struct Node** head, int x){    struct Node** tmp1 = NULL;    while (*head)    {            if ((*head)->data == x)            {                tmp1 = head;            }            head = &(*head)->next;    }    if (tmp1)    {        struct Node* tmp = *tmp1;        *tmp1 = tmp->next;        free(tmp);    }} // Utility function to create a new node with// given keystruct Node* newNode(int x){    Node* node = new Node ;    node->data = x;    node->next = NULL;    return node;} // This function prints contents of linked// list starting from the given Nodevoid display(struct Node* head){    struct Node* temp = head;    if (head == NULL)    {        cout << "NULL\n";        return;    }    while (temp != NULL)    {        cout << temp->data <<" --> ";        temp = temp->next;    }    cout << "NULL\n";} // Driver codeint main(){    struct Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(3);    head->next->next->next = newNode(4);    head->next->next->next->next = newNode(5);    head->next->next->next->next->next = newNode(4);    head->next->next->next->next->next->next = newNode(4);         cout << "Created Linked list: ";    display(head);         // Pass the address of the head pointer    deleteLast(&head, 4);      cout << "List after deletion of 4: ";         display(head);         return 0;} // This code is contributed by khushboogoyal499
#include <stdio.h>#include <stdlib.h> // A linked list Nodestruct Node {    int data;    struct Node* next;}; // Function to delete the last occurrencevoid deleteLast(struct Node** head, int x){        struct Node** tmp1 = NULL;        while(*head) {                if((*head)->data == x) {                        tmp1 = head;                }                head = &(*head)->next;        }        if(tmp1) {                struct Node* tmp = *tmp1;                *tmp1 = tmp->next;                free(tmp);        }} /* Utility function to create a new node withgiven key */struct Node* newNode(int x){    struct Node* node = malloc(sizeof(struct Node*));    node->data = x;    node->next = NULL;    return node;} // This function prints contents of linked list// starting from the given Nodevoid display(struct Node* head){    struct Node* temp = head;    if (head == NULL) {        printf("NULL\n");        return;    }    while (temp != NULL) {        printf("%d --> ", temp->data);        temp = temp->next;    }    printf("NULL\n");} /* Driver program to test above functions*/int main(){    struct Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(3);    head->next->next->next = newNode(4);    head->next->next->next->next = newNode(5);    head->next->next->next->next->next = newNode(4);    head->next->next->next->next->next->next = newNode(4);    printf("Created Linked list: ");    display(head);    deleteLast(&head, 4);   // Pass the address of the head pointer    printf("List after deletion of 4: ");    display(head);    return 0;}
import java.io.*;  // A linked list Nodeclass Node{    int data;    Node next;         Node(int data)    {        this.data = data;        this.next = null;    }} class GFG{ // Function to delete the last occurrencestatic Node deleteLast(Node head,int x){    Node temp = head;    Node ptr = null;         while (temp != null)    {                 // If found key, update        if (temp.data == x)            ptr = temp;                     temp = temp.next;    }       // If the last occurrence is the last node    if (ptr != null && ptr.next == null)    {        temp = head;                 while (temp.next != ptr)        {            temp = temp.next;        }        temp.next = null;    }         // If it is not the last node    if (ptr != null && ptr.next != null)    {        ptr.data = ptr.next.data;        temp = ptr.next;        ptr.next = ptr.next.next;    }    return head;} // This function prints contents of linked list// starting from the given Nodestatic void display(Node head){    Node temp = head;    if (head == null)    {        System.out.print("NULL\n");        return;    }    while (temp != null)    {        System.out.print( temp.data+" --> ");        temp = temp.next;    }    System.out.print("NULL\n");} // Driver codepublic static void main(String[] args){    Node head = new Node(1);    head.next = new Node(2);    head.next.next = new Node(3);    head.next.next.next = new Node(4);    head.next.next.next.next = new Node(5);    head.next.next.next.next.next = new Node(4);    head.next.next.next.next.next.next = new Node(4);         System.out.print("Created Linked list: ");    display(head);         // Pass the address of the head pointer    head = deleteLast(head, 4);    System.out.print("List after deletion of 4: ");    display(head);}} // This code is contributed by patel2127
# A linked list Nodeclass Node:    def __init__(self, new_data):                 self.data = new_data        self.next = None # Function to delete the last occurrencedef deleteLast(head, x):     temp = head    ptr = None         while (temp != None):                 # If found key, update        if (temp.data == x):            ptr = temp                         temp = temp.next         # If the last occurrence is the last node    if (ptr != None and ptr.next == None):        temp = head        while (temp.next != ptr):            temp = temp.next                     temp.next = None         # If it is not the last node    if (ptr != None and ptr.next != None):        ptr.data = ptr.next.data        temp = ptr.next        ptr.next = ptr.next.next             return head     # Utility function to create a new node# with given keydef newNode(x):     node = Node(0)    node.data = x    node.next = None    return node # This function prints contents of linked# list starting from the given Nodedef display(head):     temp = head         if (head == None):        print("NULL\n")        return         while (temp != None):        print( temp.data," --> ", end = "")        temp = temp.next         print("NULL") # Driver codehead = newNode(1)head.next = newNode(2)head.next.next = newNode(3)head.next.next.next = newNode(4)head.next.next.next.next = newNode(5)head.next.next.next.next.next = newNode(4)head.next.next.next.next.next.next = newNode(4) print("Created Linked list: ", end = '')display(head) # Pass the address of the head pointerhead = deleteLast(head, 4)print("List after deletion of 4: ", end = '') display(head) # This code is contributed by rutvik_56
<script>// A linked list Nodeclass Node{     // Utility function to create a new node    // with given key    constructor(data)    {        this.data = data;        this.next = null;            }} // Function to delete the last occurrencefunction deleteLast(head, x){    let temp = head;    let prt = null;     while (temp != null)     {         //If found key, update         if (temp.data == x)            ptr = temp;        temp = temp.next;     }           // If the last occurrence is the last node     if (ptr != null && ptr.next == null)     {         temp = head;        while (temp.next != ptr)        {            temp = temp.next;        }        temp.next = null;     }           // If it is not the last node     if (ptr != null && ptr.next != null)     {         ptr.data = ptr.next.data;        temp = ptr.next;        ptr.next = ptr.next.next;              }     return head;     } // This function prints contents of linked// list starting from the given Nodefunction display(head){    let temp = head    if (head == null)    {        document.write("NULL<br>");        return;    }    while (temp != null)    {        document.write( temp.data," --> ", end = "");        temp = temp.next;    }    document.write("NULL<br>")} // Driver codelet head = new Node(1)head.next = new Node(2)head.next.next = new Node(3)head.next.next.next = new Node(4)head.next.next.next.next = new Node(5)head.next.next.next.next.next = new Node(4)head.next.next.next.next.next.next = new Node(4); document.write("Created Linked list: ");display(head) // Pass the address of the head pointerhead = deleteLast(head, 4)document.write("List after deletion of 4: ")display(head) // This code is contributed by avanitrachhadiya2155</script>
Created Linked list: 1 --> 2 --> 3 --> 4 --> 5 --> 4 --> 4 --> NULL
List after deletion of 4: 1 --> 2 --> 3 --> 4 --> 5 --> 4 --> NULL
Time Complexity: O(n)
Auxiliary Space: O(1)
Given a linked list and a key to be deleted. Delete last occurrence of key from linked. The list may have duplicates.
Examples:  
Input:   1->2->3->5->2->10, key = 2
Output:  1->2->3->5->10
The idea is to traverse the linked list from beginning to end. While traversing, keep track of last occurrence key. After traversing the complete list, delete the last occurrence by copying data of next node and deleting the next node.  
C++
Java
Python3
C#
Javascript
// A C++ program to demonstrate deletion of last// Node in singly linked list#include <bits/stdc++.h> // A linked list Nodestruct Node {    int key;    struct Node* next;}; void deleteLast(Node* head, int key){    // Initialize previous of Node to be deleted    Node* x = NULL;     // Start from head and find the Node to be    // deleted    Node* temp = head;    while (temp) {        // If we found the key, update xv        if (temp->key == key)            x = temp;         temp = temp->next;    }     // key occurs at-least once    if (x != NULL) {         // Copy key of next Node to x        x->key = x->next->key;         // Store and unlink next        temp = x->next;        x->next = x->next->next;         // Free memory for next        delete temp;    }} /* Utility function to create a new node with   given key */Node* newNode(int key){    Node* temp = new Node;    temp->key = key;    temp->next = NULL;    return temp;} // This function prints contents of linked list// starting from the given Nodevoid printList(struct Node* node){    while (node != NULL) {        printf(" %d ", node->key);        node = node->next;    }} /* Driver program to test above functions*/int main(){    /* Start with the empty list */    struct Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(3);    head->next->next->next = newNode(5);    head->next->next->next->next = newNode(2);    head->next->next->next->next->next = newNode(10);     puts("Created Linked List: ");    printList(head);    deleteLast(head, 2);    puts("\nLinked List after Deletion of 2: ");    printList(head);    return 0;}
// A Java program to demonstrate deletion of last// Node in singly linked listclass GFG{      // A linked list Nodestatic class Node{    int key;    Node next;}; static Node deleteLast(Node head, int key){    // Initialize previous of Node to be deleted    Node x = null;     // Start from head and find the Node to be    // deleted    Node temp = head;    while (temp != null)    {        // If we found the key, update xv        if (temp.key == key)            x = temp;         temp = temp.next;    }     // key occurs at-least once    if (x != null)    {         // Copy key of next Node to x        x.key = x.next.key;         // Store and unlink next        temp = x.next;        x.next = x.next.next;         // Free memory for next    }    return head;} /// Utility function to create a new node with//given key /static Node newNode(int key){    Node temp = new Node();    temp.key = key;    temp.next = null;    return temp;} // This function prints contents of linked list// starting from the given Nodestatic void printList( Node node){    while (node != null)    {        System.out.printf(" %d ", node.key);        node = node.next;    }} // Driver code/public static void main(String args[]){    // /Start with the empty list /    Node head = newNode(1);    head.next = newNode(2);    head.next.next = newNode(3);    head.next.next.next = newNode(5);    head.next.next.next.next = newNode(2);    head.next.next.next.next.next = newNode(10);     System.out.printf("Created Linked List: ");    printList(head);    deleteLast(head, 2);    System.out.printf("\nLinked List after Deletion of 2: ");    printList(head);}} // This code is contributed by Arnab Kundu
# Python3 program to demonstrate deletion of# last Node in singly linked list # A linked list Nodeclass Node:     # Constructor to initialize the node object    def __init__(self, data):        self.data = data        self.next = None def deleteLast(head, key) :     # Initialize previous of Node to be deleted    x = None     # Start from head and find the Node to be    # deleted    temp = head    while (temp != None) :             # If we found the key, update xv        if (temp.key == key) :            x = temp         temp = temp.next         # key occurs at-least once    if (x != None) :             # Copy key of next Node to x        x.key = x.next.key         # Store and unlink next        temp = x.next        x.next = x.next.next         # Free memory for next         return head # Utility function to create# a new node with given keydef newNode(key) :     temp = Node(0)    temp.key = key    temp.next = None    return temp # This function prints contents of linked list# starting from the given Nodedef printList( node) :     while (node != None) :             print ( node.key, end = " ")        node = node.next     # Driver Codeif __name__=='__main__':     # Start with the empty list    head = newNode(1)    head.next = newNode(2)    head.next.next = newNode(3)    head.next.next.next = newNode(5)    head.next.next.next.next = newNode(2)    head.next.next.next.next.next = newNode(10)     print("Created Linked List: ")    printList(head)    deleteLast(head, 2)         print("\nLinked List after Deletion of 2: ")    printList(head) # This code is contributed by Arnab Kundu
// C# program to demonstrate deletion of last// Node in singly linked listusing System; class GFG{      // A linked list Nodepublic class Node{    public int key;    public Node next;}; static Node deleteLast(Node head, int key){    // Initialize previous of Node to be deleted    Node x = null;     // Start from head and find the Node to be    // deleted    Node temp = head;    while (temp != null)    {        // If we found the key, update xv        if (temp.key == key)            x = temp;         temp = temp.next;    }     // key occurs at-least once    if (x != null)    {         // Copy key of next Node to x        x.key = x.next.key;         // Store and unlink next        temp = x.next;        x.next = x.next.next;         // Free memory for next    }    return head;} /// Utility function to create a new node with//given key /static Node newNode(int key){    Node temp = new Node();    temp.key = key;    temp.next = null;    return temp;} // This function prints contents of linked list// starting from the given Nodestatic void printList( Node node){    while (node != null)    {        Console.Write(" {0} ", node.key);        node = node.next;    }} // Driver codepublic static void Main(String []args){    // Start with the empty list    Node head = newNode(1);    head.next = newNode(2);    head.next.next = newNode(3);    head.next.next.next = newNode(5);    head.next.next.next.next = newNode(2);    head.next.next.next.next.next = newNode(10);     Console.Write("Created Linked List: ");    printList(head);    deleteLast(head, 2);    Console.Write("\nLinked List after Deletion of 2: ");    printList(head);}} // This code has been contributed by 29AjayKumar
<script> // A Javascript program to demonstrate// deletion of last Node in singly// linked listclass Node{    constructor(key)    {        this.key = key;        this.next = null;    }} function deleteLast(head, key){         // Initialize previous of Node to be deleted    let x = null;      // Start from head and find the Node to be    // deleted    let temp = head;         while (temp != null)    {                 // If we found the key, update xv        if (temp.key == key)            x = temp;          temp = temp.next;    }      // key occurs at-least once    if (x != null)    {                 // Copy key of next Node to x        x.key = x.next.key;          // Store and unlink next        temp = x.next;        x.next = x.next.next;          // Free memory for next    }    return head;} // This function prints contents of linked// list starting from the given Nodefunction printList(node){    while (node != null)    {        document.write(node.key + " ");        node = node.next;    }} // Driver codelet head = new Node(1);head.next = new Node(2);head.next.next = new Node(3);head.next.next.next = new Node(5);head.next.next.next.next = new Node(2);head.next.next.next.next.next = new Node(10); document.write("Created Linked List: <br>");printList(head);deleteLast(head, 2); document.write("<br>Linked List after " +               "Deletion of 2: <br>");printList(head); // This code is contributed by rag2127 </script>
Created Linked List: 
 1  2  3  5  2  10 
Linked List after Deletion of 2: 
 1  2  3  5  10 
Time Complexity: O(n)
Auxiliary Space: O(1)
The above solution doesn’t work when the node to be deleted is the last node.Following solution handles all cases. 
C++
C
Java
Python3
C#
Javascript
// A C++ program to demonstrate deletion of last// Node in singly linked list#include <bits/stdc++.h>using namespace std; // A linked list Nodestruct Node {    int data;    struct Node* next;}; // Function to delete the last occurrencevoid deleteLast(struct Node* head, int x){    struct Node *temp = head, *ptr = NULL;    while (temp) {         // If found key, update        if (temp->data == x)            ptr = temp;               temp = temp->next;    }     // If the last occurrence is the last node    if (ptr != NULL && ptr->next == NULL) {        temp = head;        while (temp->next != ptr)            temp = temp->next;              temp->next = NULL;    }     // If it is not the last node    if (ptr != NULL && ptr->next != NULL) {        ptr->data = ptr->next->data;        temp = ptr->next;        ptr->next = ptr->next->next;        free(temp);    }} /* Utility function to create a new node withgiven key */struct Node* newNode(int x){    Node* node = new Node ;    node->data = x;    node->next = NULL;    return node;}   // This function prints contents of linked list// starting from the given Nodevoid display(struct Node* head){    struct Node* temp = head;    if (head == NULL) {        cout <<"NULL\n";        return;    }    while (temp != NULL) {        cout <<" --> "<< temp->data;        temp = temp->next;    }    cout <<"NULL\n";} /* Driver program to test above functions*/int main(){    struct Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(3);    head->next->next->next = newNode(4);    head->next->next->next->next = newNode(5);    head->next->next->next->next->next = newNode(4);    head->next->next->next->next->next->next = newNode(4);    cout <<"Created Linked list: ";    display(head);    deleteLast(head, 4);    cout <<"Linked List after deletion of 4: ";    display(head);    return 0;} // This code is contributed by shivanisinghss2110
// A C program to demonstrate deletion of last// Node in singly linked list#include <stdio.h>#include <stdlib.h> // A linked list Nodestruct Node {    int data;    struct Node* next;}; // Function to delete the last occurrencevoid deleteLast(struct Node* head, int x){    struct Node *temp = head, *ptr = NULL;    while (temp) {         // If found key, update        if (temp->data == x)            ptr = temp;               temp = temp->next;    }     // If the last occurrence is the last node    if (ptr != NULL && ptr->next == NULL) {        temp = head;        while (temp->next != ptr)            temp = temp->next;              temp->next = NULL;    }     // If it is not the last node    if (ptr != NULL && ptr->next != NULL) {        ptr->data = ptr->next->data;        temp = ptr->next;        ptr->next = ptr->next->next;        free(temp);    }} /* Utility function to create a new node withgiven key */struct Node* newNode(int x){    struct Node* node = malloc(sizeof(struct Node*));    node->data = x;    node->next = NULL;    return node;} // This function prints contents of linked list// starting from the given Nodevoid display(struct Node* head){    struct Node* temp = head;    if (head == NULL) {        printf("NULL\n");        return;    }    while (temp != NULL) {        printf("%d --> ", temp->data);        temp = temp->next;    }    printf("NULL\n");} /* Driver program to test above functions*/int main(){    struct Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(3);    head->next->next->next = newNode(4);    head->next->next->next->next = newNode(5);    head->next->next->next->next->next = newNode(4);    head->next->next->next->next->next->next = newNode(4);    printf("Created Linked list: ");    display(head);    deleteLast(head, 4);    printf("List after deletion of 4: ");    display(head);    return 0;}
// Java program to demonstrate deletion of last// Node in singly linked listclass GFG{ // A linked list Nodestatic class Node{    int data;    Node next;}; // Function to delete the last occurrencestatic void deleteLast(Node head, int x){    Node temp = head, ptr = null;    while (temp!=null)    {         // If found key, update        if (temp.data == x)            ptr = temp;            temp = temp.next;    }     // If the last occurrence is the last node    if (ptr != null && ptr.next == null)    {        temp = head;        while (temp.next != ptr)            temp = temp.next;        temp.next = null;    }     // If it is not the last node    if (ptr != null && ptr.next != null)    {        ptr.data = ptr.next.data;        temp = ptr.next;        ptr.next = ptr.next.next;        System.gc();    }} /* Utility function to create a new node withgiven key */static Node newNode(int x){    Node node = new Node();    node.data = x;    node.next = null;    return node;} // This function prints contents of linked list// starting from the given Nodestatic void display(Node head){    Node temp = head;    if (head == null)    {        System.out.print("null\n");        return;    }    while (temp != null)    {        System.out.printf("%d --> ", temp.data);        temp = temp.next;    }    System.out.print("null\n");} /* Driver code*/public static void main(String[] args){    Node head = newNode(1);    head.next = newNode(2);    head.next.next = newNode(3);    head.next.next.next = newNode(4);    head.next.next.next.next = newNode(5);    head.next.next.next.next.next = newNode(4);    head.next.next.next.next.next.next = newNode(4);    System.out.print("Created Linked list: ");    display(head);    deleteLast(head, 4);    System.out.print("List after deletion of 4: ");    display(head);}} /* This code is contributed by PrinciRaj1992 */
# A Python3 program to demonstrate deletion of last# Node in singly linked list # A linked list Nodeclass Node:    def __init__(self, new_data):        self.data = new_data        self.next = None # Function to delete the last occurrencedef deleteLast(head, x):     temp = head    ptr = None    while (temp!=None):         # If found key, update        if (temp.data == x) :            ptr = temp            temp = temp.next         # If the last occurrence is the last node    if (ptr != None and ptr.next == None):        temp = head        while (temp.next != ptr) :            temp = temp.next           temp.next = None         # If it is not the last node    if (ptr != None and ptr.next != None):        ptr.data = ptr.next.data        temp = ptr.next        ptr.next = ptr.next.next             return head     # Utility function to create a new node with# given keydef newNode(x):     node = Node(0)    node.data = x    node.next = None    return node # This function prints contents of linked list# starting from the given Nodedef display( head):     temp = head    if (head == None):        print("None\n")        return         while (temp != None):        print( temp.data," -> ",end="")        temp = temp.next         print("None") # Driver code head = newNode(1)head.next = newNode(2)head.next.next = newNode(3)head.next.next.next = newNode(4)head.next.next.next.next = newNode(5)head.next.next.next.next.next = newNode(4)head.next.next.next.next.next.next = newNode(4)print("Created Linked list: ")display(head)head = deleteLast(head, 4)print("List after deletion of 4: ")display(head) # This code is contributed by Arnab Kundu
// C# program to demonstrate deletion of last// Node in singly linked listusing System; class GFG{ // A linked list Nodepublic class Node{    public int data;    public Node next;}; // Function to delete the last occurrencestatic void deleteLast(Node head, int x){    Node temp = head, ptr = null;    while (temp != null)    {         // If found key, update        if (temp.data == x)            ptr = temp;            temp = temp.next;    }     // If the last occurrence is the last node    if (ptr != null && ptr.next == null)    {        temp = head;        while (temp.next != ptr)            temp = temp.next;        temp.next = null;    }     // If it is not the last node    if (ptr != null && ptr.next != null)    {        ptr.data = ptr.next.data;        temp = ptr.next;        ptr.next = ptr.next.next;    }} /* Utility function to create a new node withgiven key */static Node newNode(int x){    Node node = new Node();    node.data = x;    node.next = null;    return node;} // This function prints contents of linked list// starting from the given Nodestatic void display(Node head){    Node temp = head;    if (head == null)    {        Console.Write("null\n");        return;    }    while (temp != null)    {        Console.Write("{0} --> ", temp.data);        temp = temp.next;    }    Console.Write("null\n");} /* Driver code*/public static void Main(String[] args){    Node head = newNode(1);    head.next = newNode(2);    head.next.next = newNode(3);    head.next.next.next = newNode(4);    head.next.next.next.next = newNode(5);    head.next.next.next.next.next = newNode(4);    head.next.next.next.next.next.next = newNode(4);    Console.Write("Created Linked list: ");    display(head);    deleteLast(head, 4);    Console.Write("List after deletion of 4: ");    display(head);}} // This code contributed by Rajput-Ji
<script> // JavaScript program to demonstrate// deletion of last// Node in singly linked list     // A linked list Nodeclass Node {    constructor() {        this.data = 0;        this.next = null;    }}     // Function to delete the last occurrence    function deleteLast(head , x) {       var temp = head, ptr = null;        while (temp != null) {             // If found key, update            if (temp.data == x)                ptr = temp;            temp = temp.next;        }         // If the last occurrence is the last node        if (ptr != null && ptr.next == null) {            temp = head;            while (temp.next != ptr)                temp = temp.next;            temp.next = null;        }         // If it is not the last node        if (ptr != null && ptr.next != null) {            ptr.data = ptr.next.data;            temp = ptr.next;            ptr.next = ptr.next.next;                 }    }     /*     Utility function to create a new     node with given key     */    function newNode(x) {       var node = new Node();        node.data = x;        node.next = null;        return node;    }     // This function prints contents of linked list    // starting from the given Node    function display(head) {        var temp = head;        if (head == null) {            document.write("null<br/>");            return;        }        while (temp != null) {            document.write( temp.data + " --> ");            temp = temp.next;        }        document.write("null<br/>");    }     /* Driver code */             var head = newNode(1);        head.next = newNode(2);        head.next.next = newNode(3);        head.next.next.next = newNode(4);        head.next.next.next.next = newNode(5);        head.next.next.next.next.next = newNode(4);        head.next.next.next.next.next.next = newNode(4);        document.write("Created Linked list: ");        display(head);        deleteLast(head, 4);        document.write("List after deletion of 4: ");        display(head); // This code contributed by gauravrajput1 </script>
Created Linked list:  --> 1 --> 2 --> 3 --> 4 --> 5 --> 4 --> 4NULL
Linked List after deletion of 4:  --> 1 --> 2 --> 3 --> 4 --> 5 --> 4NULL
Time Complexity: O(n)
Auxiliary Space: O(1)Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
princiraj1992
Rajput-Ji
andrew1234
kalaikarthick
29AjayKumar
nidhi_biet
rutvik_56
khushboogoyal499
GauravRajput1
shivanisinghss2110
rag2127
avanitrachhadiya2155
patel2127
rhythmsingla1
sumitgumber28
hiteshreddy2181
technophpfij
Linked List
Linked List
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stack Data Structure (Introduction and Program)
LinkedList in Java
Introduction to Data Structures
What is Data Structure: Types, Classifications and Applications
Implementing a Linked List in Java using Class
Detect and Remove Loop in a Linked List
Add two numbers represented by linked lists | Set 1
Queue - Linked List Implementation
Function to check if a singly linked list is palindrome
Implement a stack using singly linked list