链表中倒数第k个结点

来源:互联网 发布:淘宝详情页尺寸多少? 编辑:程序博客网 时间:2024/06/05 09:39

题目描述

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

解答

为了实现只遍历链表一遍,就能找到倒数第k个结点,我们可以定义两个指针。第一个链表从链表头开始走k步之后,第二个链表从链表头开始走。当第一个指针到达链表尾部的NULL时,第二个指针所指的就是我们要找的结点。

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {        if(!pListHead||k==0)            return NULL;        ListNode* p = pListHead;        while(p&&k>0)        {            p = p->next;            --k;        }        //k大于链表长度        if(k>0)            return NULL;        ListNode *c = pListHead;        while(p)        {            c = c->next;            p = p->next;        }        return c;    }
0 0
原创粉丝点击