算法刷题之七链表
1|0链表
题目:
- 链表删除某一个节点
- 删除倒数第N个节点
- 链表逆序
- 回文链表
- 判断链表是否有环路
- 找出环路链表的入口
- 链表排序
- 相交链表
- 两个连表生成相加链表
需要注意的是:链表尾部的next为None
。所以判断链表结束时,这是遍历一个链表最常用的结束方式
。使用的代码:
其实是当p已经指向了next区域,这时next为空,所以能够退出
当使用p.next != None
时,这时p指向的最有一个节点,而不是节点的next。
2|0链表删除某一个节点:
删除节点两种方式:
3|0删除倒数第N个节点
有两种方式:
- 算出倒数N的正数num,然后移动到该节点前一个,删除节点
- 设置双指针,指针的间距是倒数N。当快指针到链尾时,慢指针当好到待删除的前一个。
- 删除节点需要考虑节点为头结点的情况。这时指针指向头结点,不易删除。解决办法是给头结点增加一个前行节点。将指针指向该前行节点。
4|0链表逆序
需要注意结束条件。当cur == None
时,pre刚好在链尾的位置。返回pre就是返回了新的链表
5|0回文链表
回文最常用的判断方式是:
- 逆序,然后比较逆序之后和逆序之前是否相同。如果相同就是回文,不同就不是回文
- 将前一半保存,逆序或者入栈,和后一半比较。如果都相同则是回文。
链表回文有多种方式:
- 将链表中所有数据保存到列表中,使用列表的逆序来判断
- 利用快慢指针,前一半链表的值入栈,然后出栈和后一半比较判断
- 利用快慢指针,逆序前一半链表,和后一半比较
6|0判断链表是否有环路
判断链表是否有环路有两个解决方法,
第一:快慢指针,如果存在环路,快指针一定会追上慢指针
第二:字典。将遍历过的节点存入到字典中,每次遍历时在字典中查找,如果存在则表明有环路。
7|0找出环路链表的入口
通过计算可以知道,快指针走的距离是慢指针距离的两倍,同时快指针比慢指针多走了一个圆的距离。所以在快慢指针相遇的地方,两个指针以相同的数据在走下去,相遇的地方就是环的入口
8|0链表排序
使用链表这样数据结构实现排序,归并排序的实现如下:
先分开,后合并
9|0相交链表
编写一个程序,找到两个单链表相交的起始节点。
在节点 c1 开始相交。
原理:两个链表是否有相交的地方,可以通过如下方法测试出来:
走完A之后,从B起始点开始走,同样,走完B之后,从A开始走,这样如果有相交的位置,那么A和B到相交的位置就刚好一致。
10|0两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
输入:head = [1,2,3,4]
输出:[2,1,4,3]
11|0两个连表生成相加链表
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。
12|0链表解题总结
链表是我喜欢的数据结构,因为链表没有太多复杂操作。通常是遍历链表一直到尾节点,然后一边遍历一边配合指针操作。在链表中有几个小技巧可以好好总结一下:
- 使用快慢指针可以找到链表的中间位置。
一个指针是快指针,每次走两步,一个指针是慢指针,每次走一步。当快指针到末尾时,慢指针刚好在链表的中间位置。使用场景:回文链表,归并排序
-
带头结点的指针更好操作。在函数中,创建一个带头结点指针更方便操作。
node = ListNode(None)
使用场景:删除节点,翻转节点 -
链表取奇偶很简单,next的next就能保证奇偶
__EOF__

本文链接:https://www.cnblogs.com/goldsunshine/p/14930723.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理