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 herestruct 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;
}