w3resource

Java: Delete a specified node in the middle of a singly linked list

Java Basic: Exercise-175 with Solution

Delete Middle Node in Linked List

Write a Java program to delete a specified node in the middle of a singly linked list.

Sample Singly linked list: 10->20->30->40->50
Delete the fourth node i.e. 40
Result: 10->20->30->50

Visual Presentation:

Java Basic Exercises: Delete a specified node in the middle of a singly linked list.

Sample Solution:

Java Code:

// Importing necessary Java utilities
import java.util.*;
import java.util.Arrays;
import java.util.LinkedList;

// ListNode class definition representing each node of the linked list
class ListNode {
    int val;
    ListNode next;

    // Constructor to initialize the ListNode
    ListNode(int val) {
        this.val = val;
        this.next = null;
    }
}

// Main class Solution
public class Solution {
    // Initializing the head of the linked list with a node containing value 10
    public static ListNode head = new ListNode(10);

    // Main method
    public static void main(String[] args) {
        // Creating a linked list with nodes containing values 20, 30, 40, 50
        head.next = new ListNode(20);
        head.next.next = new ListNode(30);
        head.next.next.next = new ListNode(40);
        head.next.next.next.next = new ListNode(50);

        ListNode p = head; // Creating a reference 'p' to the head node

        System.out.println("Original Linked list:");
        printList(p); // Printing the original linked list
        System.out.println("\nAfter deleting the fourth node, Linked list becomes:");
        deleteNode(head.next.next.next); // Deleting the fourth node in the list
        p = head; // Updating reference 'p' to the head node after deletion
        printList(p); // Printing the updated linked list
    }

    // Method to delete a node from the linked list
    public static void deleteNode(ListNode node) {
        // Check if the node to be deleted is not the last node in the list
        if (node.next != null) {
            int temp = node.val;
            node.val = node.next.val;
            node.next.val = temp;

            node.next = node.next.next; // Skip the next node effectively deleting the current node
        } else {
            // If the node to be deleted is the last node, traverse to the previous node and delete it
            ListNode p = head;
            while (p.next.val != node.val) {
                p = p.next;
            }
            p.next = null; // Set the next of the previous node to null
        }
    }

    // Method to print the linked list
    static void printList(ListNode p) {
        while (p != null) {
            System.out.print(p.val); // Printing the value of the current node
            if (p.next != null) {
                System.out.print("->"); // Adding an arrow for non-last nodes
            }
            p = p.next; // Move to the next node
        }
    }
} 

Sample Output:

Original Linked list:
10->20->30->40->50
After deleting the fourth node, Linked list becomes:
10->20->30->50

Flowchart:

Flowchart: Java exercises: Delete a specified node in the middle of a singly linked list.

Java Code Editor:

Company:  Adobe Apple Microsoft

Contribute your code and comments through Disqus.

Previous: Write a Java program to find the maximum number inside the number in the window (size k) at each moving in a given array of intergers with duplicate numbers. Move the window from the start of the array.
Next: Write a Java program to partition an given array of integers into even number first and odd number second.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/java-exercises/basic/java-basic-exercise-175.php