剑指Offer第七题:链表中倒数第k个结点
问题描述
输入一个链表,输出该链表中倒数第k个结点。
问题分析
链表都只能从第一个位置依次访问下去,其他方式无法访问,不能像数组一样方便,那么如果我们先遍历整个链表,将数据存储在节点数组中,我们直接在数组中寻找那倒数第K个结点。
算法分析
- 如果给的链表是空,那么我们直接返回空。
- 如果给的K值大于总节点数,那么也返回空。
- 建立一个节点数组来存储数据,方便操作,弥补链表访问的不足
源代码

1 class ListNode { 2 int val; 3 ListNode next = null; 4 5 ListNode(int val) { 6 this.val = val; 7 } 8 } 9 public class Solution { 10 public ListNode FindKthToTail(ListNode head,int k) { 11 if(head==null) 12 return null; 13 ListNode []arry=new ListNode[10000]; 14 int fag=0; 15 while(head!=null) { 16 arry[fag]=head; 17 head=head.next; 18 fag++; 19 } 20 if(k>fag) 21 return null; 22 23 return arry[fag-k]; 24 } 25 }