JZ22:链表中倒数第k个结点
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
示例1
输入:
1,{1,2,3,4,5}
返回值:
{5}
分析:
快慢指针思想:
需要两个指针,快指针fast,慢指针slow
倒数第k个节点和最后一个节点差k-1
先让fast走k步,再让两个指针同时走,直到fast为空时,停止走
最后返回slow指针,即倒数第k个节点
代码:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
*
* @param pListHead ListNode类
* @param k int整型
* @return ListNode类
*/
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {
// write code here
struct ListNode*fast=pListHead,*slow=pListHead;
while(k--)
{
if(fast==NULL)
{
return NULL;
}
fast=fast->next;
}
while(fast)
{
fast=fast->next;
slow=slow->next;
}
return slow;
}