输入一个链表,输出该链表中倒数第k个结点。
思路:快慢指针,相差k,当快指针到达结尾时,慢指针刚好位于倒数第k个;
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
//快慢指针;
if(pListHead==NULL||k==0) return NULL;
ListNode *preNode=pListHead;
ListNode *nextNode=pListHead;
for(int i=1;i<k;i++)
{
if(nextNode!=NULL)
{
nextNode=nextNode->next;
}
else{
return NULL;
}
}
if(nextNode==NULL) return NULL;
while(nextNode->next!=NULL)
{
preNode=preNode->next;
nextNode=nextNode->next;
}
return preNode;
}