《剑指Offer》题目:链表中倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点
题目分析:因为不能直接从链表的尾部遍历,所以要分两步走:
第一步:从链表的头部开始遍历,直至链表的尾部,统计出链表结点的个数
第二步:根据链表结点的个数,计算出倒数第k个结点的位置(从头部看的位置),即n-k+1个结点,输出该结点。
Java代码:
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class FindKthToTail { public ListNode FindKthToTail(ListNode head,int k) { ListNode listNode = head; if (listNode == null) return null; int temp = 0; while (listNode != null){ listNode = listNode.next; temp++; } if(k>temp) return null; temp = temp - k + 1; ListNode listNode1 = head; while (temp > 1){ listNode1 = listNode1.next; temp--; } return listNode1; } }
技进乎艺,艺进乎道