链表中倒数第k个结点

2017-03-24  本文已影响0人  安然_fc00

指针法

    ListNode* FindKthToTail(ListNode* head, unsigned int k) {
        if(head == NULL || k<=0)
        {
            return NULL;
        }
        ListNode* p1 = head;
        ListNode* p2 = head;
        int n = k-1;
        while(n > 0 && p1->next != NULL)
        {
            p1 = p1->next;
            n--;
        }
        if(n > 0)//k>总长度
        {
            return NULL;
        }
        else if(p1->next == NULL)//k=总长度
        {
            return head;
        }
        //k<总长度
        while(p1->next != NULL)
        {
            p1 = p1->next;
            p2 = p2->next;
        }
         
        return p2;
    }
上一篇 下一篇

猜你喜欢

热点阅读