为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第六天 链表

标签:
算法

第一模块:课程介绍

课程名称: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;
};

第四模块:课程记录

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消