关闭

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

74人阅读 评论(0) 收藏 举报
分类:

题目描述

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:468次
    • 积分:146
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档