输入一个链表,输出该链表的倒数第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) {
if(pListHead==NULL||k==0)
return NULL;
ListNode *pFHead=pListHead;//快指针
ListNode *pSHead=pListHead;//慢指针
for(int i=0;i<k-1;i++)
{
if(pFHead->next!=NULL)
pFHead=pFHead->next;
else
return NULL;
}
while(pFHead->next!=NULL)
{
pFHead=pFHead->next;
pSHead=pSHead->next;
}
return pSHead;
}
};