Java program to get the middle element of linkedlist in a single iteration

To get the middle element of a linked list in a single iteration, we can use the two-pointer technique. We can use two pointers, one that moves one node at a time (slow pointer) and another that moves two nodes at a time (fast pointer). When the fast pointer reaches the end of the list, the slow pointer will be pointing to the middle element.

Here's the Java program to implement this:

ref‮i:ot re‬giftidea.com
public class LinkedListMiddleElement {
    
    static class Node {
        int data;
        Node next;
        
        public Node(int data) {
            this.data = data;
            this.next = null;
        }
    }
    
    public static void main(String[] args) {
        Node head = new Node(1);
        head.next = new Node(2);
        head.next.next = new Node(3);
        head.next.next.next = new Node(4);
        head.next.next.next.next = new Node(5);
        
        // Initialize slow and fast pointers
        Node slow = head;
        Node fast = head;
        
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        
        // Print the middle element
        System.out.println("Middle element: " + slow.data);
    }
}

Output:

Middle element: 3