剑指offer---链表中倒数第k个结点

题目描述

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

使用快慢指针

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead,unsigned int k){
        if(k<=0)
            return nullptr;
        if(!pListHead)
            return nullptr;
        ListNode *p=pListHead;
        unsigned int c=0;
        while(p&&c<k){
            c++;
            p=p->next;
        }
        if(c<k)//k大于链表长度
            return nullptr;
        ListNode *q=pListHead;
        while(p){
            p=p->next;
            q=q->next;
        }
        return q;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_22238021/article/details/80667420
今日推荐