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

news/2025/3/21 12:06:28/

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;
}


http://www.ppmy.cn/news/537810.html

相关文章

C语言程序设计编程题[一](山西大学876)

文章目录 2015年【876】c程序设计一、计算字符串中 字母&#xff0c;数字&#xff0c;其他字符的个数二、计算两个整数的最大公约数和最小公倍数总结 2015年【876】c程序设计 提示&#xff1a;仅完成了c语言部分的代码大题 提示&#xff1a;以下是本篇文章正文内容&#xff0c…

力扣---LeetCode876. 链表的中间结点

文章目录 前言876. 链表的中间结点链接方法一&#xff1a;快慢指针1.1 代码&#xff1a;1.2 流程图&#xff1a;方法二&#xff1a;找中间结点2.1 代码&#xff1a;2.2 流程图&#xff1a; 总结 前言 焦虑不会消除明天的悲伤 只会让你今天的力量荡然无存 本章的内容是力扣每日…

876. 游戏

876. 游戏 ★ 输入文件&#xff1a;game1.in 输出文件&#xff1a;game1.out 简单对比时间限制&#xff1a;1 s 内存限制&#xff1a;128 MB A Game游戏 译 by 肖遥 描述 有如下一个双人游戏:N(2 < N < 100)个正整数的序列放在一个游戏平台上&#xff0c;游戏由玩…

山西大学c语言考试题,山西大学《876数据结构+C程序设计》考研题库详解

复习笔记 一、什么是数据结构 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。 二、基本概念和术语 1数据 数据是对客观事物的符号表示,是计算机科学中所有能输入到计算机中并能被计算机程序处理的符号的总称。 2数据元素 数…

LeetCode-876. 链表的中间结点

题目 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;[1,2,3,4,5] 输出&#xff1a;此列表中的结点 3 (序列化形式&#xff1a;[3,4,5]) 返回的结点值为…

java leetcode876

package leetcode;/*** Auther: QWH* Date: 2023-04-10-18:41*/ public class LinklistedE876 {class ListNode {ListNode next;int val;public ListNode(int value, ListNode next) {this.next next;this.val value;}}/*** 给你单链表的头结点 head &#xff0c;请你找出并返…

leetcode 876.链表中间结点

链表中间结点 leetcode题目链接&#xff1a;876. 链表的中间结点 一、朴素解法 最直观的思路&#xff0c;因为不知道这个链表的长度&#xff0c;就先通过一次循环统计链表的长度len 之后第二次遍历&#xff0c;直到找到中间结点&#xff0c;输出 /*** Definition for sing…

链表的中间结点 C语言 leetcode876题

目录 1、题目来源 2、函数介绍 3、问题示例 4、函数实现 (快慢指针) 1、题目来源 876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/middle-of-the-linked-list/ 2、函数介绍 给定一个头结点为 head 的非空单链表&#xff0c;…