设备技术支持东莞网站建设,辽宁建设工程信息网业绩认定,网站上怎么做企业推广,wordpress 菜价插件文章目录 13.1 数据结构介绍13.2 链表的基本操作206. 反转链表#xff08;简单#xff09;21. 合并两个有序链表#xff08;简单#xff09;24.两两交换链表中的节点#xff08;中等#xff09; 13.3 其它链表技巧160. 相交链表#xff08;简单#xff09;234. 回文链表… 文章目录 13.1 数据结构介绍13.2 链表的基本操作206. 反转链表简单21. 合并两个有序链表简单24.两两交换链表中的节点中等 13.3 其它链表技巧160. 相交链表简单234. 回文链表简单 13.4 练习83. 删除排序链表中的重复元素简单328. 奇偶链表中等19. 删除链表的倒数第 N 个结点中等148. 排序链表中等 总结 13.1 数据结构介绍 单链表是由节点和指针构成的数据结构每个节点存有一个值和一个指向下一个节点的指针因此很多链表问题可以用递归处理。不同于数组链表并不能直接获取任意节点的值必须要通过指针找到该节点后才能获取值。同理在未遍历到链表结尾时我们也无法知道链表长度除非依赖其他数据结构。 LeetCode 默认的链表表示方式如下 struct ListNode{int val;ListNode *next;ListNode(int x) : val(x), next(nullptr){}
};由于在进行链表操作的时候尤其是删除节点经常会因为对当前节点进行操作而导致内存或指针出现问题。有两个小技巧可以解决这个问题一是尽量处理当前节点的下一个节点而非当前节点二是建立一个虚拟节点dummy node使其指向当前链表的头节点这样即使原链表所有节点被删除也会有一个 dummy 存在返回 dummy-next 即可。
13.2 链表的基本操作
206. 反转链表简单 思路及代码 206. 反转链表
21. 合并两个有序链表简单 思路及代码 21. 合并两个有序链表
24.两两交换链表中的节点中等 思路及代码 24.两两交换链表中的节点
13.3 其它链表技巧
160. 相交链表简单 思路及代码 160. 相交链表
234. 回文链表简单 思路及代码 234. 回文链表
13.4 练习
83. 删除排序链表中的重复元素简单 思路及代码 83. 删除排序链表中的重复元素
328. 奇偶链表中等 思路及代码 328. 奇偶链表
19. 删除链表的倒数第 N 个结点中等 思路及代码 19. 删除链表的倒数第 N 个结点
148. 排序链表中等 思路及代码 148. 排序链表
总结 指针题目通常需要画图仔细分析节点之间的连接关系确定连接顺序。 通常设置一个虚拟节点 dummy注意书写方式。数据域可以不存储任何信息指针域存储指向开始节点的指针即第一个元素节点的存储位置。 虚拟节点作用很大可以自行百度。 ListNode *dummy new ListNode(), *cur dummy;链表的自定义构造函数ACM模式需要自己写出来 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/链表的其他技巧通常用到数学思想比如能够判断环的快慢指针利用快慢指针找到链表中点。