链表中倒数第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;}
};