课程名称:JavaScript版数据结构与算法
课程章节:第5章 数据结构之“链表”
主讲老师:lewis
今天学习的内容包括:
5-1 链表简介——链表处理非两端的数据,解决堆栈和队列无法解决的一些问题。
5-2 LeetCode:237.删除链表中的节点——通过节点的next指向进行删除节点。
5-3 LeetCode:206.反转链表——对一个数组使用链表进行反转操作。
1、遍历链表
2、插入一个节点
3、删除链表中的节点
let a = {val: 'a'} let b = {val: 'b'} let c = {val: 'c'} let d = {val: 'd'} a.next = b b.next = c c.next = d // 遍历链表 let p = a while(p){ console.log(p.val) p=p.next } // 插入 let e = {val: 'e'} c.next = e e.next = d // 删除 c.next = d
通过更改节点的next指向进行删除链表中的节点
/** * @param {ListNode} node * @return {void} Do not return anything, modify node in-place instead. */ var deleteNode = function(node) { node.val = node.next.val node.next = node.next.next };
反转数组排列
/** * @param {ListNode} head * @return {ListNode} */ var reverseList = function(head) { let p1 = head let p2 = null while(p1){ let tmp = p1.next p1.next = p2 p2 = p1 p1 = tmp } return p2 };
反转链表这题按照我之前的做法可能就是直接 reverse() 。在这里知道了 reverse() 的运行原理,虽然知道了原理,但是我还是没太懂,等下看下算法题解,看看能不能看懂,对自己说一句,加油😀~
坚持打卡,坚持学习!明天见💪~