一,链表中倒数第k个节点
题目描述
输入一个链表,输出该链表中倒数第k个节点。
我的代码
/**
* 为了实现只遍历链表一次就能找到倒数第k个节点,我们定义两个指针。
* 第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动。
* 从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针
* 的距离保持在k-1,当第一个指针到达链表的尾节点时,第二个指针刚好走到
* 倒数第k个节点。
*/
ListNode *findKthToTail(ListNode *head, int k){
ListNode *fast = head;
ListNode *slow = NULL;
if(head == NULL || k <= 0){
return NULL;
}
for(int i = 0; i < k - 1; i ++){
fast = fast->next;
}
slow = head;
while(fast->next != NULL){
slow = slow->next;
fast = fast->next;
}
return slow;
}