package linkedlist; public class FindNthNode { public static LinkedList.Node findNthNode(LinkedList linkedList, int n) { LinkedList.Node fast = linkedList.head(); LinkedList.Node slow = linkedList.head(); int length = 1; while (fast.next() != null) { fast = fast.next(); length++; if(length > n) { slow = slow.next(); } } return slow; } private static class LinkedList { private LinkedList.Node head; private LinkedList.Node tail; public LinkedList() { head = new LinkedList.Node("head"); tail = head; } public void add(LinkedList.Node node) { tail.setNext(node); tail = node; } public LinkedList.Node head() { return head; } public static class Node { private LinkedList.Node next; private String data; public Node(String data) { this.data = data; } public LinkedList.Node next() { return next; } public void setNext(LinkedList.Node next) { this.next = next; } public String data() { return data; } public void setData(String data) { this.data = data; } } } public static void main(String [] args) { LinkedList linkedList = new LinkedList(); linkedList.add( new LinkedList.Node("1")); linkedList.add( new LinkedList.Node("2")); linkedList.add( new LinkedList.Node("3")); linkedList.add( new LinkedList.Node("4")); System.out.println(findNthNode(linkedList, 2).data()); } }