前言
目录
1.删除链表中等于给定值 val 的所有节点。
题解思路
代码实现
2.反转一个单链表
反转链表链接:反转链表
画图分析
代码实现
3.链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结 点。
习题链接:链表中间结点
思路分析
画图分析
代码实现
4.链表中倒数最后k个结点
习题链接:链表中倒数最后k个结点_牛客题霸_牛客网 (nowcoder.com)
题目描述:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
第二种解决办法
思路分析
画图分析
代码实现
5.合并两个有序链表
习题链接:21. 合并两个有序链表 - 力扣(LeetCode)
题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
思路分析
画图分析
代码实现
6. 链表分割
习题链接:链表分割_牛客题霸_牛客网 (nowcoder.com)
题目描述:现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。
思路分析
画图分析
代码实现
7.链表回文
习题链接:链表的回文结构_牛客题霸_牛客网 (nowcoder.com)
题目描述:
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。
给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。
思路分析
画图分析
代码实现
8. 相交链表
题目链接:160. 相交链表 - 力扣(LeetCode)
题目描述:给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null
。
思路分析
画图分析
代码实现
9.环形链表1
题目链接:141. 环形链表 - 力扣(LeetCode)
题目描述:
给你一个链表的头节点 head
,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next
指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos
不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true
。 否则,返回 false
。
思路分析
画图分析
代码实现
10.环形链表2
题目链接:142. 环形链表 II - 力扣(LeetCode)
题目描述:
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 NULL
不允许修改 链表。