代码[Java实现]:
/** * 返回单链表倒数第k个结点: [新浪面试题 & 剑指Offer.22] * 思路:1. 接收头结点和k值 * 2. 整体遍历,得到链表长度 * 3. 再次遍历,返回(len-k)个值即为倒数第k个结点 * @author KyleHsu */ public Node lastKNode(Node head,int k){ // 没有结点,没有找到 if (head.next == null){ return null; } int len = SinglelinkedlistTest.getLen(head); // 如果给的k不在链表长度范围内,肯定找不到 if (k<=0 || k>len){ return null; } Node temp = head.next; for (int i = 0; i < (len-k); i++) { temp = temp.next; } return temp; } /** * 返回单链表的有效节点个数 * @author KyleHsu */ public static int getLen(Node head){ if (head.next == null){ return 0; } int length = 0; Node temp = head.next; while (temp != null){ temp = temp.next; length++; } return length; }