题目:输入一个链表,输出该链表中倒数第k个结点。
思路:
两个指针,两个指针距离k个结点,当走在前面的指针已经走到NULL,后面的指针刚好走到倒数第k个位置
代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k)
{
//边界条件1:pListHead指向空即为空链
//边界条件2:k<=0,倒数的大小为正
if(pListHead==NULL||k<=0)
{
return NULL;
}
ListNode* pcur1=pListHead;
ListNode *pcur2=pListHead ;
while(k>0)
{
k--;
//边界条件3:链表不够长,没有倒数第k个结点
if(pcur1!=NULL)
{
pcur1=pcur1->next;
}
else
{
return NULL;
}
}
while(pcur1!=NULL)
{
pcur1=pcur1->next;
pcur2=pcur2->next;
}
return pcur2;
}
};
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。