第七天:链表的中间节点
最编程
2024-10-08 07:09:44
...
题目:给你单链表的头结点head,请你找出并返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。
输入:head=[1,2,3,4,5]
输出:3
public ListNode middleNode(ListNode head){
if (head==null){
return head;
}
ListNode fast=head;
ListNode slow=head;
while (fast!=null && fast.next !=null){
fast=fast.next.next;
slow=slow.next;
}
return slow;
}
有一个中间节点时:
有两个中间节点时:
推荐阅读
-
电源按钮 237。删除链表 [Ravens] 中的节点 - 代码
-
第七天:链表的中间节点
-
Power Buckle Simple 876. 链表的中间节点 - 问题解决
-
相交链表 + 确定环形链表 + 查找环形链表的入口节点 - I. 相交链表
-
链表学习:链表表头插入法和表尾插入法以及 HashMap 中的链表节点插入法
-
数据结构:图解单个链表的各种操作(插入表头、插入表尾、插入任意位置、删除节点、查询节点、查找链表长度、清空链表)
-
数据结构》学习笔记 - 链表知识(有头节点和无头节点单链表的基本操作)(回顶部)
-
数据结构:双向链表各种操作的图解(表头插入、表尾插入、任意位置插入、查询节点、删除节点、查找链表长度......)。...)
-
单链表创建--头部插入法创建带头部节点的单链表,超详细--头部插入法和尾部插入法,这里记录头部插入法创建带头部节点的单链表的具体过程: 以 C 语言为例。 1)首先使用 typedef 关键字定义节点数据类型 1 typedef struct LNode{ 2 int var; // 以整数数据为例 3 struct LNode* next; // 需要定义一个 LNode 结构指针,即指向后继节点的节点指针 4 }LNode, *LinkList. 第 4 行中的 LNode 和 *LinkList 是可选的,但如果有了它们,以后再定义节点和指针变量会更方便,而且不必在 LNode 前面添加 struct 关键字,而是可以直接这样定义变量。 LNode l1, l2; // 定义节点变量。 LinkList p1, p2; // 定义指针变量。 与上述 typedef 关键字定义的单一链表数据类型的方法相同: struct LNode{ struct LNode* next; //定义指针变量 struct LNode* next; } } 如果使用这种方法定义链表节点的类型,则在定义节点变量和指针变量时,必须在 LNode 前面加上 struct 关键字,即 struct LNode l1, l2; // 定义节点变量 struct LNode *p1, *p2; //define pointer variables. 这两种方法的效果是一样的,都是定义一个包含整数变量数据字段和后续指针字段的单一链表节点类型。 (2)通过表头插入的函数构建一个链表,并返回 LinkList 类型表头指针变量 L。 算法的基本思想:一个有头节点的单链表有两类节点,头节点和元素节点,头节点通常不存储数据,用 L 表示,元素节点存储数据,用 s 表示。 2.1 定义头节点指针变量 L 和元素节点 s
-
数据结构]单链表解释 + 完整代码(插入、删除、尾部插入、头部插入、按值和按位查找、前向插入和后向插入),包含和不包含头部节点的两种实现方式