找链表的中间结点和倒数第k个结点(链表笔试题面试题)-创新互联
一、问题

查找链表的中间节点
查找链表的倒数第k个结点
二、解决思路:快慢指针
找中间节点:快指针走两步,慢指针走一步
找倒数第k个结点:快指针走k步或k-1步,然后慢指针再开始走
三、代码实现(c语言)
1.找中间结点
sListNode* FindMidNode(sListNode* pHead)
{
sListNode* slow = pHead, *fast = pHead;
while(fast!=NULL && fast->next!=NULL)
{
slow = slow->next;
fast = fast->next->next;
}
return slow;2.找倒数第k个结点
sListNode* FindKTailNode(sListNode* pHead,int k)
{
assert(k >= 0);
sListNode* fast = pHead, *slow = pHead;
while(--k) //快指针走k-1步
{
if(fast->next == NULL)
return NULL;
fast = fast->next;
}
while(fast->next != NULL)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
网站栏目:找链表的中间结点和倒数第k个结点(链表笔试题面试题)-创新互联
标题网址:http://www.jxjierui.cn/article/dgdjhe.html


咨询
建站咨询
