1.链表是什么?
- 多个元素组成的列表
- 元素存储不连续,用next指针连在一起 68a8761509af2104cec3759e1005743.png
2.整这么麻烦干嘛,链表毛线用?
- 数组vs链表
- 数组: 增删非首尾元素时往往需要移动元素
- 链表: 增删非首尾元素,不需要移动元素,只需要更改next的指向即可。
LeetCode#237 删除链表中的节点
var deleteNode = function(node) {
node.val = node.next.val; //复制节点
node.next = node.next.next; //将node节点指向下下个节点
};
那么发生了什么?
4 -> 1 -> 3 -> 5
假设删除1
先复制节点 4 -> 3 -> 3 -> 5
然后3指向5 变相删除
4 -> 3 -> 5
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
var reverseList = function(head) {
let p1 = head;
let p2 = null;
while(p1){
const tmp = p1.next;
p1.next = p2;
p2 = p1;
p1 = tmp;
}
return p2;
};
那么咋回事?
双指针循环链表
你让前面的指向后面的,然后在向前推,你能懂我意思么^_^
先发布,未完结
网友评论