【手把手带你刷好题】68. 链表中间结点

举报
安然无虞 发表于 2022/05/27 00:33:44 2022/05/27
【摘要】 大家好,我是安然无虞。 文章目录 每篇前言 面试题:链表的中间节点解题思路 遇见安然遇见你,不负代码不负卿。 每...

在这里插入图片描述

大家好,我是安然无虞。

每篇前言


博客主页:安然无虞

作者认证:2021年博客新星Top2

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请铁汁批评斧正。

火爆专栏:蓝桥杯基础算法剖析
欢迎加入:比特社区
在这里插入图片描述

种一棵树最好的时间是十年前,其次是现在。
各位,共勉。

面试题:链表的中间节点

原题链接:链表的中间节点
题目描述:
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
示例:
在这里插入图片描述

解题思路

本题比较简单,直接利用快慢指针即可但是有两点需要注意,会在下面给出
代码执行:

struct ListNode* middleNode(struct ListNode* head)
{
   struct ListNode* slow = head, *fast = head;
   //注意循环条件:想的是结束条件,写的是继续条件
   while(fast && fast->next)
   {
       slow = slow->next;
       fast = fast->next->next;
   }
   return slow;
}

   
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

完整代码:
在这里插入图片描述试想:为什么循环条件不能写成fast->next && fast?
因为如果节点个数是偶数个,那么fast会走到最后一个节点的next位置,也就是NULL,此时再判断循环条件fast->next时会导致野指针。(可能这样叙述不好理解哦,没关系,动手画画图就很容易理解啦。)

遇见安然遇见你,不负代码不负卿。

码字不易,求个三连
抱拳了兄弟们。

在这里插入图片描述
在这里插入图片描述

文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。

原文链接:bit-runout.blog.csdn.net/article/details/123991183

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。