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

【九月打卡】第20天 算法(3)

标签:
JavaScript

课程名称2周刷完100道前端优质面试真题
课程章节:第2章 前端面试技能拼图1 :数据结构和算法(上),大厂面试必考
主讲老师双越
课程内容
今天学习的内容包括:
2-12 【连环问】链表和数组哪个实现队列更快-分析解题思路
2-13 【连环问】链表和数组哪个实现队列更快-代码演示和单元测试
2-14 【连环问】链表和数组哪个实现队列更快-性能分析
这几节主要是讲怎么用链表实现队列。

课程收获
主要内容大致复述如下。

  • 链表实现队列

设置私有属性两个指针分别指向链表头和尾。
入队从链表尾入链表,注意表头表尾为空的情况。当前队尾的 next 指向新节点,尾指针指向新节点。
出队从链表头删除,依然是要注意表头为空的情况。当只有一个节点时,尾节点记得处理。出队返回当前表头值,头指针指向当前节点的下一个节点。

  class queue {
    constructor() {
      this.head = null;
      this.tail = null;
    }
    // tail 添加
    append(val) {
      const node = {
        val,
        next: null,
      };
      if (this.head == null) {
        this.head = node;
      }
      if (this.tail) {
        this.tail.next = node;
      }
      this.tail = node;
    }
    // head 删除 返回删除节点值
    delete() {
      if (this.head == null) {
        return null;
      }
      let headVal = this.head.val;
      if (this.head.next == null) {
        this.tail = null;
      }
      this.head = this.head.next;
      return headVal;
    }
  }
  const q = new queue();
  q.append(100);
  console.info("queue1", q.head, q.tail);
  q.delete();
  console.info("queue2", q.head, q.tail);
  q.append(200);
  q.append(300);
  q.append(400);
  console.info("queue3", q.head, q.tail);
  • 链表 or 数组实现队列的比较

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消