牛客网--链表中倒数第K个结点

来源:互联网 发布:qq头像psd源码下载 编辑:程序博客网 时间:2024/06/06 21:34

题目描述

输入一个链表,输出该链表中倒数第k个结点。

基本思路:

先统计链表的长度length,然后倒数第k个结点就是从头开始数的第length - k + 1个结点。然后遍历整条链表,找到这个结点返回就可以了。

为了程序的鲁棒性,首先得判断链表是否为空,k值是否为0。如果是,则返回nullptr。如果不检查,遇到问题就会崩溃。

/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public:    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {        int mark = 0, length = 0;        ListNode *temp;            if (pListHead == nullptr || pListHead->next == nullptr || k == 0) //检查链表是否为空或k是否为0            return nullptr;        for (temp = pListHead; temp != nullptr; temp = temp->next) //统计长度            ++length;        for (temp = pListHead; temp != nullptr; temp = temp->next){            ++mark;            if (mark == (length - k + 1)){                return temp;            }        }        return nullptr;    }};


原创粉丝点击