链表中倒数第k个结点

题解:

我们把链表存两份,让其中一个先走k个节点,然后两个链表一起走,直到第一个链表到头,因为两个相差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) {
   
    ListNode *pList1=pListHead;
    ListNode *pList2=pListHead;
    for(int i=0;i<k;i++)
    {
   
       if(pList2==NULL)return NULL;
       pList2=pList2->next;
    }
    while(pList2)
    {
   
        pList1=pList1->next;
        pList2=pList2->next;
    }
    return pList1;
    }
};