手记

【九月打卡】第六天 链表

第一模块:课程介绍

课程名称:JavaScript版数据结构与算法 轻松解决前端算法面试
课程章节:5-1 链表简介
主讲老师:lewis

第二模块:课程内容

了解前端中的链表,熟悉JS中链表的使用

第三模块:课程收获

1. 链表是什么?

  • 多个元素组成的列表。

  • 元素存储不连续,用next指针连在一起。

2. 数组和链表的区别

  • 数组:增删非首尾元素时往往需要移动元素,之前使用队列和栈的时候,如果删除首尾的话,都还好说,但是要删除中间的话,删除完成后,这个位置后面的所有元素都需要往前移动一位
  • 链表:增删非首尾元素的时候,不需要移动位置,只需要修改next的指向就好了。

3. JS中的链表

在js中,使用Object来模拟一个链表

代码示例:

const a = {val:'a'};
const b = {val:'b'};
const c = {val:'c'};
const d = {val:'d'};

// 连接起来
a.next = b;
b.next = c;
c.next = d;
console.log(a);

debug查看

遍历链表

// 遍历链表
let p = a;
while (p){
    console.log(p.val);
    p = p.next;
}

插入

示例代码

// 插入
const e = {val: 'e'};
// 修改变量的指向
c.next = e;
e.next = d;

删除

删除的时候,直接修改指向就好,比如删除e

c.next = d

这样链表a就又恢复了。

4 原型链

  • 原型链的本质是链表
  • 原型链上的借点是各种原型对象,比如Function.prototype,Object.prototype
  • 原型链通过 __proto__属性链接各种原型对象

5. 题目-删除链表中的节点

这个题目,虽然不知道上一个对象是什么,但是我们知道下一个是什么,这么说的话,我们就可以把自己变成下一个,然后把下一个给删除掉

代码示例:

var deleteNode = function(node) {
    node.val = node.next.val;
    node.next = node.next.next;
};

第四模块:课程记录

0人推荐
随时随地看视频
慕课网APP