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

class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode* p1=pListHead,*p2=pListHead;
        int count=0;
        while(p1!=NULL){
            count++;
            if(count>k) p2=p2->next;
            p1=p1->next;
        }
        return count<k?NULL:p2;
    }
};

分析:用两个指针来判断,两个指针差k个位置,当后面一个指针到尾部时,前面那个就在倒数第k个位置。还要注意判断k大于链表长度的情况。