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

来源:互联网 发布:网易我的世界手机版js 编辑:程序博客网 时间:2024/06/03 07:15

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

两个指针,有一个先走k-1步。另一个从头开始,两个同时走,当一个到达末尾时,另一个就到了末尾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(pListHead==NULL)            return NULL;        ListNode* begin=pListHead;        ListNode* pre=pListHead;        int count=k-1;        while(begin!=NULL&&count)            {            --count;            begin=begin->next;        }        if(count>0||begin==NULL)            return NULL;        ListNode* temp=pListHead;        while(begin!=NULL)            {            begin=begin->next;            temp=pre;            pre=pre->next;        }        return temp;    }};
0 0
原创粉丝点击