In this article we are going to see how we can remove a node from a given position in a linked list by using Java programming language.
Java Program to Remove a Node from a Given Position in a Linked List
Each element in Java is treated as a node in Linked List. Each position is like index which starts from 0 and goes on. To delete a specific node from given position, you have to specify the index.
Let’s see a program to understand it more clearly.
Approach:
- Create a linked list and add some elements.
- Display the elements to the user.
- Ask the user to enter a position to delete a node.
- Pass it to the user function. The function removes the node at the position and makes the previous node point to the next node in the list.
- Display the new linked list.
Program:
import java.util.*;
// Main class
public class Main
{
// Class Node that defines the two linked list variables
class Node
{
int data;
Node nextNode;
// constructor to create a node
public Node(int data)
{
this.data = data;
this.nextNode = null;
}
}
// Setting the head and end of the node as NULL
public Node head = null;
public Node tail = null;
// Method to delete a node from a specified position from a linked list
public void deletePos(int pos)
{
System.out.println("Removing node from position "+pos+"...");
// If linked list is empty
if (head == null)
{
System.out.println("The linked list is empty");
return;
}
// Store head node
Node temp = head;
// If pos = 0, head shall be removed
if (pos == 0)
{
// Point head to the next node
head = temp.nextNode;
return;
}
//Iterate to the previous node of the to be deleted node
for (int i = 0; temp != null && i < pos - 1;i++)
temp = temp.nextNode;
// If position is more than number of nodes
if (temp == null || temp.nextNode == null)
{
System.out.println("Wrong input");
return;
}
// Store the address of the next node
Node nextNode = temp.nextNode.nextNode;
// Unlink the node at the position
temp.nextNode= nextNode;
}
// method to add a node to the linked list
public void add(int data)
{
Node newNode = new Node(data);
// Checks if there was any previous node
if(head==null)
{
head = newNode;
tail = newNode;
}
else
{
tail.nextNode = newNode;
tail = newNode;
}
}
// Method to display all the nodes of the linked list
public void show()
{
Node curr = head;
// If the head is pointing to no node then the linked list is empty
if(head==null)
System.out.println("Linked List is empty");
else
{
System.out.println("The nodes are:");
while(curr!=null)
{
System.out.print(curr.data+",");
curr = curr.nextNode;
}
System.out.println();
}
}
public static void main(String[] args)
{
// create an object of the main class
Main ll = new Main();
// add elements to the linked list
ll.add(10);
ll.add(20);
ll.add(30);
ll.add(40);
ll.add(50);
ll.add(60);
ll.add(70);
ll.add(80);
ll.add(90);
ll.add(100);
// display the nodes
ll.show();
// Taking user input
System.out.println("Enter a position to delete a node");
Scanner sc = new Scanner(System.in);
int pos = sc.nextInt();
// Deleting the node
ll.deletePos(pos);
// display the nodes
ll.show();
// Taking user input
System.out.println("Enter another position to delete a node");
pos = sc.nextInt();
// Deleting the node
ll.deletePos(pos);
// display the nodes
ll.show();
}
}
Output: The nodes are: 10,20,30,40,50,60,70,80,90,100, Enter a position to delete a node 1 Removing node from position 1... The nodes are: 10,30,40,50,60,70,80,90,100, Enter another position to delete a node 3 Removing node from position 3... The nodes are: 10,30,40,60,70,80,90,100,
Provided list of Simple Java Programs is specially designed for freshers and beginners to get familiarize with the concepts of Java programming language and become pro in coding.