In this article we are going to see how we can add a node to a singly linked list by using Java programming language.
Java Program to Add a Node to a Singly Linked List
In a linked list each element is called as a node which is having the actual element and a pointer to next element. You can add a new node at any position of the linked list.
Approach:
- Create a linked list add some elements.
- Display the list.
- Add elements at the beginning by using the
addBeg()user defined method that points the head to the new node and links the node to the rest of the list. - Display the list.
- Ask the user to enter the position and data to insert.
- Pass the values with head to the
addPos( )user defined method. The method iterates to the position and adds the node to the rest of the list. - Display the list.
- Insert elements at the end by using
insertEnd( )user defined method. The method updates the tail and links the new node. - Display the 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 add a node to the start of a linked list
public void addBeg(int data)
{
//Create a new node
Node newNode = new Node(data);
//Checks if the list is empty
if(head == null)
{
// makes the head and tail point to the first node
head = newNode;
tail = newNode;
}
else
{
Node temp = head;
//The newNode becomes the head of the linked list
head = newNode;
//the head node now points to the previous head node
head.nextNode = temp;
}
}
// Method to add a node at a specified position
public void addPos(Node headNode, int pos, int data)
{
Node curr = headNode;
// Position should be always greater than equals to 1
if (pos < 1)
System.out.print("Wrong input");
// if position is 1 then the insertion happens at head
if (pos == 1)
{
// Setting the newNode as head
Node newNode = new Node(data);
newNode.nextNode = headNode;
curr = newNode;
}
else
{
while (pos-- != 0)
{
if (pos == 1)
{
Node newNode = new Node(data);
// Set the new node to point to the previously existing node
newNode.nextNode = headNode.nextNode;
headNode.nextNode = newNode;
break;
}
headNode = headNode.nextNode;
}
if (pos != 1)
System.out.print("Wrong input");
}
head = curr;
}
// method to add a node to the end of 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);
// display the nodes
ll.show();
// add a node at beginning
System.out.println("Adding 11 at beginning");
ll.addBeg(11);
// Display the nodes
ll.show();
// Add a node at a position
// Taking user input
Scanner sc = new Scanner(System.in);
System.out.println("Enter the position to enter a node and the data");
int pos = sc.nextInt(), data = sc.nextInt();
ll.addPos(ll.head,pos,data);
// display the nodes
ll.show();
// Add a node at the end
System.out.println("Adding 99 at end");
ll.add(99);
// display the nodes
ll.show();
}
}
Output: The nodes are: 10,20,30,40,50, Adding 11 at beginning The nodes are: 11,10,20,30,40,50, Enter the position to enter a node and the data 5 50 The nodes are: 11,10,20,30,50,40,50, Adding 99 at end The nodes are: 11,10,20,30,50,40,50,99,
Beginners and experienced programmers can rely on these Best Java Programs Examples and code various basic and complex logics in the Java programming language with ease.