1. 程式人生 > >劍指offer--連結串列中倒數第k個結點

劍指offer--連結串列中倒數第k個結點

題目描述

輸入一個連結串列,輸出該連結串列中倒數第k個結點。

解析

可以先便利一遍求出連結串列總長,再遍歷第二遍求出結點。

或者定義兩個指標,一個先遍歷到第k個結點,再兩個一起往後遍歷,前一個為null時,後一個就是題目要求的結點。

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(k<=0||pListHead==NULL)return NULL;
        ListNode *p = pListHead;
        ListNode *q;
        for(int i=0;i<k-1;++i){
            if(p->next==NULL)return NULL;
            p = p->next;
        }
        p = p->next;
        q = pListHead;
        while(p){
            p = p->next;
            q = q->next;
        }
        return q;
    }
};