链表:修改指针拼接链表虚拟头 -> 快慢指针 -> 穿针引线 -> 先穿再排后判空环,边界,前后序链表的价值:不必要求物理内存的连续性,只要对插入和删除友好即可
简单介绍一下:
链表和数组,说到底都是计算机的内存,
数组是连续的内存,
链表是依靠指针寻找下一个内存单元;
链表的插入,删除,遍历操作
插入nex = 当前节点.next当前节点.next = 插入的指针插入指针.next = tmp删除cur.next = cur.next.next遍历迭代cur = headwhile cur != null {print(cur)cur = cur.next}递归dfs(cur) {if cur == null returnprint(cur.val)return dfs(cur.next)}
指针的修改
1、链表的反转
#206. 反转链表 ->整体反转var reverseList = function(head) {let pre = null;let cur = head;// 遍历链表while (cur !== null) {let next = cur.next; //引用第三个变量,记住反转前的下一个指针cur.next = pre; // 反转pre = cur; // 移动指针cur = next; // 移动指针}return pre;};#92. 反转链表 II ->局部反转
