剑指offer---链表中倒数第k个节点

来源:互联网 发布:java 发布webservice 编辑:程序博客网 时间:2024/06/06 06:43

解题思路:利用前后两个指针。

1、先让前指针走k步,设全场L,那么就剩余L-K步;

2、前后两个指针同时走,当前指针走到链表尾,就停止,这时后指针所在的位置就是倒数第K个节点;

  因为后指针走了L-K步,还剩(L-(L-K)=K)步就到链表结尾。

class Solution {public:    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {        if( pListHead==NULL||k<=0 )            return NULL;        ListNode* prev=pListHead;        ListNode* back=pListHead;        int num=k;        int count=0;        //走k步        while(num&&prev)        {            prev=prev->next;            num--;            count++;        }        while(prev)        {            prev=prev->next;            back=back->next;            count++;        }        if(count<k)  //k>链表的长度            return NULL;        else            return back;    }};



0 0
原创粉丝点击