链表

岁酱吖の 提交于 2019-12-24 15:25:39

链表是一种线性数据结构
链表与其他数据结构的比较:
在这里插入图片描述
如果你需要经常添加或删除结点,链表可能是一个不错的选择。
如果你需要经常按索引访问元素,数组可能是比链表更好的选择。

实现

单链表的实现

静态单链表的实现

单循环链表的实现

双向循环链表的实现

常用技巧

双指针
两个指针从不同位置出发:一个从始端开始,另一个从末端开始;
两个指针以不同速度移动:一个指针快一些,另一个指针慢一些。

哑结点
在首结点前添加哑结点dummy,可以方便处理头结点。

解决问题1

leetcode 2.两数相加

leetcode 19.删除链表的倒数第N个节点

leetcode 21.合并两个有序链表

leetcode 23.合并K个排序链表

leetcode 61.旋转链表

leetcode 138.复制带随机指针的链表

leetcode 141.环形链表

leetcode 142.环形链表 II

leetcode 148.排序链表

leetcode 160.相交链表

leetcode 203.移除链表元素

leetcode 206.反转链表

leetcode 234.回文链表

leetcode 237.删除链表中的节点

leetcode 328.奇偶链表

leetcode 430.扁平化多级双向链表

leetcode 707.设计链表

解决问题2

leetcode 24.两两交换链表中的节点

leetcode 25.K 个一组翻转链表

leetcode 82.删除排序链表中的重复元素 II

leetcode 83.删除排序链表中的重复元素

leetcode 86.分隔链表

leetcode 92.反转链表 II

109.有序链表转换二叉搜索树
143. 重排链表
147. 对链表进行插入排序

leetcode 203.移除链表元素

369.给单链表加一
379. 电话目录管理系统
426. 将二叉搜索树转化为排序的双向链表
430. 扁平化多级双向链表
445. 两数相加 II
708. 循环有序列表的插入
725. 分隔链表
817. 链表组件

leetcode 876. 链表的中间结点

1019.链表中的下一个更大节点
1171.从链表中删去总和值为零的连续节点

leetcode 1290.二进制链表转整数

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!