数据结构:栈与队列

文章目录

栈是一种线性的、后进先出的数据结构。

进栈

出栈

在这里插入图片描述
使用 JS 实现栈

class Stack {
  /**存储栈中的数据 */
  stack = [];

  /**
   * 添加一个元素到栈中(进栈)
   * @param {*} item 数据
   */
  push(item) {
    this.stack.push(item);
  }

  /**
   * 获取栈的最后一个元素(出栈)
   * @returns "栈为空" || 元素
   */
  pop() {
    return this.isEmpty() ? "栈为空" : this.stack.pop();
  }

  /**
   * 判断栈是否为空
   * @returns 是否为空(true:为空;false:不为空)
   */
  isEmpty() {
    return this.size() === 0;
  }

  /**
   * 获取栈的长度
   * @returns 栈的长度
   */
  size() {
    return this.stack.length;
  }
}

队列

队列是一种先进先出的、线性的数据结构,与栈的结构类似,只是最新入队到队列的数据,会第一个出队,这与栈相反。

入队
入队就是把数据添加到队列中
在这里插入图片描述

出队
出队就是从队列中取出数据
在这里插入图片描述
使用JS实现队列:

class Queue {
  /**保存队列中的数据 */
  items = [];

  /**
   * 添加一个元素到队列的尾部(入队)
   * @param {*} item 数据
   */
  enqueue(item) {
    this.items.push(item);
  }

  /**
   * 获取队列的第一个元素(出队)
   * @returns "队列为空" || 元素
   */
  dequeue() {
    if (this.isEmpty()) {
      return "队列为空";
    }
    return this.items.shift();
  }

  /**
   * 判断队列是否为空
   * @returns 是否为空(true:为空;false:不为空)
   */
  isEmpty() {
    return this.size() === 0;
  }

  /**
   * 获取队列长度
   * @returns 队列的长度
   */
  size() {
    return this.items.length;
  }
}

const queue = new Queue();

// 添加元素(入队)
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)

// 查看队列大小
console.log(`队列大小:${queue.size()}`)  // 队列大小:3

// 获取元素(出队)
console.log(`出队元素:${queue.dequeue()}`)  // 出队元素:1

参考资料


队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值