题目描述
输入一个链表,输出该链表中倒数第k个结点。
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };
算法的实现:快慢指针
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if(pListHead==NULL||k==0) return NULL; ListNode *fast=NULL; fast=pListHead; ListNode *slow=NULL; slow=pListHead; for(int i=1;i<k;i++)//注意此处PListHeaD是头结点,需要移动K-1个,之间相差K if(fast->next!=NULL)//注意此处快指针的next存在和不存在的情况 fast=fast->next; else return NULL; while(fast->next!=NULL) { fast=fast->next; slow=slow->next; } return slow; }