Delete /remove all nodes of a single linked list in java (example/non-recursive)

  • Given a single linked list, we will delete all nodes of single linked list
    • i.e. We want to delete the single linked list.
  • We have shown the single linked list in Fig 1.
    • We will traverse the single linked list.
    • We will delete the nodes of single linked list during traversal.
    • At end of iteration the whole linked list will be deleted.
Fig 1: Delete single linked list
  • We will simulate the deletion of head node from linked list
    • Similar procedure can be followed for rest of the nodes of linked list.
  • We have shown the deletion of node in Fig 2.
    • One thing, we need to take care that before we delete any node, we have to ensure that we store its next reference (next node in linked list) , otherwise we will lose the single linked list.

Algorithm – delete/remove all nodes of a single linked list in java

  • Create the variable Node backup = null
    • backup variable will be used to store the reference of next node of linked list
  • Start the traversing the single linked list using head reference
  • Store the reference of next node i.e. Node 5 [Step 1 shown in Fig 2]
    • backup = head.next
    • backup will start pointing to Node 5
  • Set the head reference to null
    • head = null (GC will take care of deleting it)
  • Restore the head to next node
    • head = backup
    • So that we can delete rest of nodes in linked list
  • Keep on iterating through the single linked list
  • Once we finished the iteration, Complete linked list will be deleted.
delete remove node single linked list
Fig 2: Delete head node of single linked list

Time complexity of algorithm is O(n).

Program – Delete/remove all nodes of single linked list in java.

1.) DeleteLinkedList Class:

  • delete method method delete all nodes in a single linked list (one by one)
  • insert method is used to insert elements or node to a single linked list
    • insert function is used to create linked list
  • print method is used to print the single linked list
package org.learn.Question;
 
import org.learn.List.Node;
 
public class DeleteLinkedList {
 
    public static Node delete(Node head) {
        Node backup = null;
        while (head != null) {
            backup = head.next;
            head = null;
            head = backup;
        }
        return head;
    }
 
    public static void insert(Node head, int data) {
        while (head.next != null)
            head = head.next;
        head.next = new Node(data);
    }
 
    public static void print(Node head) {
        while (head != null) {
            System.out.printf("%d ", head.data);
            head = head.next;
        }
        System.out.println("");
    }
}

2.) App Class:

  • We are creating the single linked list using DeleteLinkedList.insert method.
  • We are printing the linked list using DeleteLinkedList.print method.
  • We are calling DeleteLinkedList.delete method, to delete all nodes in a single linked list
package org.learn.Client;
 
import org.learn.List.Node;
import org.learn.Question.DeleteLinkedList;
 
public class App {
    public static void main(String[] args) {
        int[] data = { 9, 5, 2, 8, 10, 9, 1 };
        Node head = new Node(data[0]);
        for (int count = 1; count < data.length; count++)
            DeleteLinkedList.insert(head, data[count]);
 
        System.out.printf("Linked list is : ");
        DeleteLinkedList.print(head);
 
        head = DeleteLinkedList.delete(head);
        if (head == null) {
            System.out.println("Deleted all nodes in linked list");
        } else {
            System.out.println("Could not able to delete all nodes from linked list");
        }
    }
}

3.) Node Class:

  • Node class representing the node(s) of single linked list
package org.learn.List;
 
public class Node {
    public int data;
    public Node next;
 
    public Node(int num) {
        this.data = num;
        this.next = null;
    }
}

Output – delete/remove all nodes of  a single linked list in java

Linked list is : 10 20 10 20 50 20 50
Deleted all nodes in linked list

Download code – delete/ remove all nodes of single linked list in java