美文网首页剑指offer刷题
链表中倒数第k个结点

链表中倒数第k个结点

作者: 侯俊同学 | 来源:发表于2019-06-01 21:37 被阅读0次

    题目描述

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

    思路

    • 设置两个指针分别指向第一个结点,先让前指针跑k-1步,使得后指针指向第k个结点。然后同时向前跑。当后指针指向最后一个结点时候停止,即post->next==NULL;

    题解

    class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            if(pListHead==NULL || k==0)
                return NULL;
            ListNode * pre = pListHead;
            ListNode * post = pListHead;
            int i = 0;
            while(post!=NULL && i<k-1){
                post = post->next;
                i++;
            } 
            if(post==NULL)
                return NULL;
            while(post->next!=NULL){
                pre = pre->next;
                post = post->next;
            }
            return pre;
        }
    };
    

    相关文章

      网友评论

        本文标题:链表中倒数第k个结点

        本文链接:https://www.haomeiwen.com/subject/ethztctx.html