题目描述:
输入一个链表,输出该链表中倒数第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; }