链表中倒数最后k个结点

链表中倒数最后k个结点

链表中倒数最后k个结点_牛客题霸_牛客网输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。。题目来自【牛客题霸】icon-default.png?t=N7T8https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

描述

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。

如果该链表长度小于k,请返回一个长度为 0 的链表。

思路:

快指针先走k步,然后快慢指针一起走,如果快指针为空时,那么慢指针的指向即为链表倒数第k个结点。

特殊情况为k>列表的长度。这是应返回NULL

代码:
 

struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
    // write code here
    struct 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;

}

你可能感兴趣的:(链表,数据结构,c语言)