public class LinkedListInsertion {
// Node class made static & public so it's accessible
public static class IntNode {
int data;
IntNode link;
public IntNode(int data, IntNode link) {
this.data = data;
this.link = link;
}
}
// Print the list
public static void printList(IntNode head) {
IntNode current = head;
while (current != null) {
System.out.print(current.data + " → ");
current = current.link;
}
System.out.println("null");
}
// Insert after a given node (middle or tail insertion)
public static void insertAfter(IntNode node, int value) {
if (node != null) {
node.link = new IntNode(value, node.link);
}
}
public static void main(String[] args) {
IntNode head = null;
// 1. Insert into empty list
System.out.println("Before inserting into empty list:");
printList(head);
head = new IntNode(15, null);
System.out.println("After inserting 15:");
printList(head);
// 2. Insert at front (new head)
System.out.println("\nBefore inserting 13 at front:");
printList(head);
head = new IntNode(13, head);
System.out.println("After inserting 13:");
printList(head);
// 3. Insert 10 after 13
System.out.println("\nBefore inserting 10 after 13:");
printList(head);
insertAfter(head, 10);
System.out.println("After inserting 10:");
printList(head);
// 4. Insert 7 at the tail
System.out.println("\nBefore inserting 7 at tail:");
printList(head);
IntNode current = head;
while (current.link != null) {
current = current.link;
}
insertAfter(current, 7);
System.out.println("After inserting 7:");
printList(head);
}
}