题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
这道题还是非常简单的,只需要重新定义一个指针作为链表的尾指针即可实现返回倒数k个节点。
主要思路是:
首先将pHead赋给pTail;
然后在pTail!=NULL的情况下,将pTail向后移动k-1个节点;如果发生pTail==NULL的情况,则说明数量不足以返回倒数k个, return NULL即可;
然后就是在pTail->next!=NULL的情况下,不停地向后移动pHead和pTail即可,最后返回pHead就好~
我犯错的点在于没有考虑k==0这个特殊情况,不过鼠鼠窝呀还是考虑到pHead为NULL的情况了,只能说还是写的太少了,没经验捏qaq
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
// write code here
if(pHead==NULL)
{
return NULL;
}
if(k==0)
{
return NULL;
}
struct ListNode* pTail = pHead;
for(int i=1;i<k;i++)
{
pTail = pTail->next;
if(pTail==NULL)
{
return NULL;
}
}
while(pTail->next!=NULL)
{
pHead = pHead -> next;
pTail = pTail -> next;
}
return pHead;
}

