使用快慢指针解决,注意k大于链表情况的处理,防止对空指针解引用操作
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param pListHead ListNode类 * @param k int整型 * @return ListNode类 */ struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) { // write code here struct ListNode* slow=pListHead; struct ListNode* fast=pListHead; k=k-1; while(k--) { if(fast==NULL) return NULL; fast=fast->next; if(fast==NULL) return NULL; } while(fast->next) { slow=slow->next; fast=fast->next; } return slow; }