新闻中心

数据结构:JS实现链表、栈与队列

2025-11-21
浏览次数:
返回列表
J*aScript实现链表、栈和队列:1. 链表通过节点连接,支持高效插入删除;2. 栈遵循后进先出原则,常用push和pop操作;3. 队列遵循先进先出原则,可用数组实现但shift性能较差需优化。

数据结构:js实现链表、栈与队列

J*aScript 是一门灵活的语言,适合实现常见的数据结构。链表、栈和队列是基础但非常重要的数据结构,在算法和实际开发中广泛使用。下面分别用 JS 实现这三种结构,并说明其核心操作。

链表(Linked List)

链表由节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在插入和删除时效率更高,因为不需要移动元素。

class ListNode {
  constructor(val) {
    this.val = val;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
    this.size = 0;
  }

  // 在末尾添加节点
  append(val) {
    const node = new ListNode(val);
    if (!this.head) {
      this.head = node;
    } else {
      let current = this.head;
      while (current.next) {
        current = current.next;
      }
      current.next = node;
    }
    this.size++;
  }

  // 打印链表值
  display() {
    const result = [];
    let current = this.head;
    while (current) {
      result.push(current.val);
      current = current.next;
    }
    console.log(result.join(' -> '));
  }
}

说明:上面实现了一个单向链表,支持 append 添加节点和 display 显示所有值。可以进一步扩展 insert、remove 等方法。

栈(Stack)

栈是一种后进先出(LIFO)的数据结构,常用操作是 push(入栈)和 pop(出栈)。

class Stack {
  constructor() {
    this.items = [];
  }

  push(element) {
    this.items.push(element);
  }

  pop() {
    if (this.isEmpty()) return undefined;
    return this.items.pop();
  }

  peek() {
    if (this.isEmpty()) return undefined;
    return this.items[this.items.length - 1];
  }

  isEmpty() {
    return this.items.length === 0;
  }

Waifulabs Waifulabs

一键生成动漫二次元头像和插图

Waifulabs 317 查看详情 Waifulabs

  size() {
    return this.items.length;
  }
}

建议:栈可用于括号匹配、函数调用模拟、表达式求值等场景。用数组实现简单高效。

队列(Queue)

队列是先进先出(FIFO)的结构,常用于任务调度、广度优先搜索等。

class Queue {
  constructor() {
    this.items = [];
  }

  enqueue(element) {
    this.items.push(element);
  }

  dequeue() {
    if (this.isEmpty()) return undefined;
    return this.items.shift();
  }

  front() {
    if (this.isEmpty()) return undefined;
    return this.items[0];
  }

  isEmpty() {
    return this.items.length === 0;
  }

  size() {
    return this.items.length;
  }
}

注意:使用 shift() 删除第一个元素的时间复杂度是 O(n),如果对性能要求高,可以用对象加头尾索引的方式优化为 O(1) 出队。

基本上就这些。链表、栈和队列是构建更复杂结构的基础。理解它们的特性和实现方式,有助于写出更高效的代码。

以上就是数据结构:JS实现链表、栈与队列的详细内容,更多请关注其它相关文章!


# 有何区别  # 丹灶seo优化平台  # 王钊seo课程  # 网络营销app推广专员  # 湘潭抖音营销推广品牌  # 兰州可靠网站建设贵不贵  # 实惠的seo优化代理  # seo享誉火星  # 岳阳seo营销推广  # 金融推广网站  # 如何优化网站工具  # 有哪些  # 是一种  # javascript  # 如何实现  # 多线程  # 如何使用  # 管理器  # 自定义  # 链表  # 数据结构  #   # app  # node  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法  学习通网页版官方登录 超星学习通电脑端入口指南  html5 app怎么运行环境_配html5 app运行环境【教程】  12306选座系统怎么选连座_12306选座多人连坐操作方法  CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  UC浏览器网页版登录入口官网 电脑版网址入口  Mac怎么使用表情符号_Mac Emoji快捷键面板  AO3最新官网入口公告_2025AO3镜像站实时查询方法  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  最新韩小圈网页版登录入口_官网在线观看官方链接  c++ 命名空间怎么用 c++ namespace使用指南  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  浏览器打开即用 美图秀秀网页版入口  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  深入理解Promise链:如何在catch后中断then的执行  在Runstone环境中高效处理TasteDive API的JSON数据  QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问  steam官方网页快速访问 steam账号注册全流程  Python多版本共存与虚拟环境管理深度指南  拼多多赚钱渠道_拼多多收益来源  Golang如何安装Swagger工具_GoSwagger文档生成环境  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  C++指针和引用有什么区别_C++内存管理核心概念深度解析  J*aScript设计模式实践_j*ascript代码优化  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  星露谷物语官网入口 星露谷物语游戏官网入口  ArrayList与LinkedList操作复杂度详解:遍历与修改  将JSON对象数组转置为键值对列表的实用指南  印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】  抖音从哪里进入网页版_抖音官方入口链接  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  在哪找SublimeJ远程工具_SFTP插件配置教程  c++20的std::jthread是什么_c++可中断线程与RAII式管理  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  德邦快递查询平台 德邦快递物流信息查询入口  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  J*a实现学校排课程序_面向对象结构化项目示例  PHP表单数据传递:如何通过隐藏输入字段获取动态ID  c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  《燕云十六声》两周内达九百万玩家!位居畅销榜第五  一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰  《马克思佩恩3》早期版本曝光 UI设计曾多次调整! 

搜索