题目:输入一个链表,输出该链表中倒数第k个结点。
分析:假设整个链表有n个结点,那么倒数第k个结点,就是从头结点开始的第n-k+1个结点。两个指针,一个指针先向前走k-1步,另一个保持不变,两者相差k-1个位置。当一个指向最后一个元素的时候,另一个指向第倒数k个元素。
public ListNode FindKthToTail(ListNode head,int k) {
if(k<=0||head==null)
return null;
ListNode first=head;
ListNode second=head;
while(k-1>0){
second=second.next;
k--;
if(second==null){
return null;
}
}
while(second.next!=null){
second=second.next;
first=first.next;
}
return first;
}