struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) { // write code here if(pHead==NULL||k==0) return 0; //空链表和倒数第0个节点都返回0 struct ListNode *p=pHead,*q=pHead; //双指针法,定义两个链表类型的指针,达到进阶的空间复杂度O(1) for(int i=1;i<k;i++){ //for循环让p和q的距离保持为k q=q->next; if(q==NULL) return 0; //如果链表长度不够k,则返回0 } while(q->next!=NULL){ //p和q同步往后走,让q指向最后一个节点,p则为倒数第k个节点 p=p->next; q=q->next; } return p; //返回p即可 }