/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @param k int整型 * @return ListNode类 */ //方法二: //先遍历有n个节点,需建立一个临时指针p //然后判断n<k是否成立,若不成立返回NULL,成立则进行下一步 //重新使指针p回到链表头 //通过循环,使得指针p指向第n-k+1个节点即可 struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) { // write code here //新建指针p struct ListNode *p = pHead; //先遍历有n个节点 int n = 0; while(p!=NULL) { ++n; p = p->next; } //然后判断n<k是否成立,若不成立返回NULL,成立则进行下一步 if(n<k) { return NULL; } //重新使指针p回到链表头 p = pHead; //通过循环,使得指针p指向第n-k+1个节点即可 for (int i=0; i<(n-k); ++i) { p = p->next; } return p; }