問題描述:java
輸入一個單向鏈表,輸出該鏈表中倒數第k個結點。鏈表倒數第0個節點爲NULL。spa
public static class Node{ public int data; public Node next = null; public Node(int d, Node p){ data = d; next = p; } }
分析:code
方法1:orm
遞歸遞歸
private int nthToLastv1(Node p, int k){ if(p.next == null) return 0; int i = nthToLastv1(p.next, k) + 1; if(k == i) System.out.println(p.data); return i; }
方法2:it
非遞歸ast
private void nthToLastv2(int k){ Node p1 = head.next; Node p2 = head.next; for (int i = 1; i < k; i++){ p2 = p2.next; } while(p2.next != tail){ p1 = p1.next; p2 = p2.next; } if(p1 != null) System.out.println(p1.data); }