876. 链表的中间结点 - 力扣(LeetCode)

 方法一:计算结点个数count,挪动count/2次就是题目要求的结点。

struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* cur=head;//标记当前结点int count=0;//count记录结点个数while(cur)//计算结点个数{count++;cur=cur->next;}cur=head;//回到头结点for(int i=0;i<(count/2);i++)//循环第一次,cur为第2个结点。第(count/2)+1个结点,需要循环count/2次。{cur=cur->next;}return cur;
}

方法二:快慢指针。slow和fast的起点都是head,slow一次向后挪动一个结点,fast一次向后挪动两个结点。

fast向后挪动两个结点就是被fast->next->next赋值,此前提是fast->next不为NULL,而fast->next不为NULL的前提是fast不为NULL。所以循环判断条件为(fast&&fast->next),并且fast必须写在fast->next的左边,因为当结点个数为偶数时,slow到达中间结点后,fast为NULL,由于逻辑操作符&&会控制表达式求值顺序,fast为NULL则不会执行fast->next造成解引用空指针的错误。

1、当结点个数为奇数时,slow到达中间结点后,fast->next比fast先为NULL。

联想记忆:由于跳第1次,slow会到第2个结点。 那么slow跳第n次到达中间,就会到第n+1个结点,而fast就会跳2n次到达尾结点(第2n+1个结点),fast为尾结点则fast->next自然就是NULL。

2、当结点个数为偶数时,slow到达中间结点后,fast比fast->next先为NULL,slow为第二个中间结点。

struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* fast=head;struct ListNode* slow=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}

[C题目]力扣876. 链表的中间结点相关推荐

  1. 【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点

    目录 一.力扣第206题:反转链表 1.思路一 2.思路二 二.力扣第876题:链表的中间结点 1.思路一 2.思路二 总结 一.力扣第206题:反转链表 题目链接:206. 反转链表 - 力扣(Le ...

  2. 每日一道leetcode(python)876. 链表的中间结点

    每日一道leetcode(python)876. 链表的中间结点 2021-08-19 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1 ...

  3. LeedCode篇:876. 链表的中间结点

    876. 链表的中间结点 题目: 解题思路: 源码 踩坑点: 题目: 解题思路: 因为要找中间节点,所以用快慢指针的方法 源码 struct ListNode* middleNode(struct L ...

  4. 力扣 删除链表的倒数第N个节点

    力扣 删除链表的倒数第N个节点 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = ...

  5. JavaScript——leetcode算法入门876. 链表的中间结点【双指针专题】

    题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式: ...

  6. LeetCode Algorithm 876. 链表的中间结点

    876. 链表的中间结点 Ideas 这题直接秒杀吧,快慢指针,快指针一次走两步,慢指针一次走一步,快指针到头之后慢指针正好到链表中间. Code C++ class Solution {public ...

  7. LeetCode刷题 876链表的中间结点

    876. 链表的中间结点 难度简单550收藏分享切换为英文接收动态反馈 给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[ ...

  8. LeetCode Java刷题笔记—876. 链表的中间结点

    876. 链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点. 简单难度.使用快慢指针即可,快指针fast每次走2步,慢指针slow ...

  9. LeetCode 876——链表的中间结点

    1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形 ...

最新文章

  1. LeetCode 929 Unique Email Addresses--python一行解法,Java解法
  2. mac中flutter配置
  3. 寻宝机器人科技竞赛_永州:机器人设计竞赛展现中小学生对现代科技的热诚
  4. 验证用户输入的是不是中文名字 淘宝精品案例 元素样式设置的方式 链式编程
  5. 都在说TDD开发,那到底TDD是什么?
  6. 数据库实验三 SQL查询数据
  7. [Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针]
  8. Ubuntu Server 18.04 安装
  9. Windows可视化编程C++基础知识
  10. 20线程测试cpu性能软件,cpu测试工具(wPrime Benchmark)
  11. 解决无法删除文件:无法读取源文件或磁盘
  12. 给大家讲解一下 AIDL原理分析
  13. qq登录界面句柄_天天玩QQ!知道登录界面那两个人是谁吗?网友:不是情侣?...
  14. Forth 语言学习
  15. 你的必备技能 —— 方法
  16. linux系统单网卡绑定双IP的方法
  17. HTML5期末大作业:个人空间相册网页设计 (6页) HTML+CSS+JavaScript
  18. 今天,阿里云亮出四张“王牌”,平头哥首次交货!
  19. Xilinx 8B10B转换
  20. 如何将立创EDA中的元器件的原理图/封装和3D模型导入AD的库中

热门文章

  1. 【索引】Chapter 1. Algorithm Design
  2. 48V输入智能磁吸灯-欧创芯OC5266 60V 1.5A 高恒流精度LED 恒流驱动器
  3. 职场必备!学会这4个技巧,便可轻松操作Excel!
  4. 用 Delphi 学设计模式(一) 之 简单工厂篇
  5. 2019年国赛高教杯数学建模E题薄利多销分析解题全过程文档及程序
  6. Druid数据源MySql语句,添加租户(tenant_id)id
  7. ((蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第6天(动态规划 专题)】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有61天
  8. 重量(计量单位)英文缩写和转换表
  9. dcmm认证发证机构有哪些?
  10. 西藏春运送服务 让旅客带着温暖出发