链表中倒数最后k个结点
链表中倒数最后k个结点_牛客题霸_牛客网输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。。题目来自【牛客题霸】https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
描述
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
思路:
快指针先走k步,然后快慢指针一起走,如果快指针为空时,那么慢指针的指向即为链表倒数第k个结点。
特殊情况为k>列表的长度。这是应返回NULL
代码:
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {// write code herestruct ListNode*slow=pHead,*fast=pHead;while(k--){if (fast==NULL) {return NULL;}fast=fast->next;}while (fast) {fast=fast->next;slow=slow->next;}return slow;}