package com.interview.linklist; /** * Find middle element in linklist. * Use two pointer approach. * Test cases * 0,1,2,3,4 and so on nodes * @author tusroy * */ public class MiddleElementOfLinkList { public int middle(Node head){ if(head == null || head.next == null){ return head.data; } Node slow = head; Node fast = head.next; while(fast != null && fast.next != null){ slow = slow.next; fast = fast.next.next; } return slow.data; } public static void main(String args[]){ MiddleElementOfLinkList mle = new MiddleElementOfLinkList(); LinkList ll = new LinkList(); Node head = null; head = ll.addNode(1, head); System.out.println(mle.middle(head)); head = ll.addNode(2, head); System.out.println(mle.middle(head)); head = ll.addNode(3, head); System.out.println(mle.middle(head)); head = ll.addNode(4, head); System.out.println(mle.middle(head)); head = ll.addNode(5, head); System.out.println(mle.middle(head)); } }