troubleasy

导航

 

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

思路:快慢指针,相差k,当快指针到达结尾时,慢指针刚好位于倒数第k个;

    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
    //快慢指针;
        if(pListHead==NULL||k==0) return NULL;
        ListNode *preNode=pListHead;
        ListNode *nextNode=pListHead;
        for(int i=1;i<k;i++)
        {
            if(nextNode!=NULL)
            {
                nextNode=nextNode->next;
            }
            else{
                return NULL;
            }
        }
        if(nextNode==NULL) return NULL;
        while(nextNode->next!=NULL)
        {
            preNode=preNode->next;
            nextNode=nextNode->next;
        }
        return preNode;
        
    }

posted on 2020-05-26 01:36  troubleasy  阅读(89)  评论(0编辑  收藏  举报