1,解题思路一
遍历一遍链表求出链表的元素个数,再将链表元素个数减去k就得出正数的数,在遍历到正数的地方即可.
2.代码实现一
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k )
{
if(pListHead==NULL)
return NULL;
int sum=0;
struct ListNode* p=pListHead;
while(p)
{
p=p->next;
sum++;
}
if(k>sum)
return NULL;
int ret=sum-k;
struct ListNode* ps=pListHead;
for(int i=0;i<ret;i++)
{
ps=ps->next;
}
return ps;
}
3.解题思路二
利用快慢指针,先让快指针走K步,然后再让快慢指针同时走,当快指针走到空时,此时慢指针指向的就为所要求的指针.
4.代码实现二
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k)
{
struct ListNode*slow=pListHead;
struct ListNode*fast=pListHead;
while(k--)
{ if(fast==NULL)
return NULL;
fast=fast->next;
}
while(fast)
{
fast=fast->next;
slow=slow->next;
}
return slow;
}
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!