数据结构引论

数据结构(js)

数组

数组在js中具有非常重要的地位,js的底层对数据进行了深度的封装,提供了很多方法。

数组创建

  1. 字面量 let arr = [1,2,3,4,5];
  2. 通过 new 关键字 const arr = new Array(7)
    const arr = (new Array(7)).fill(1) 可以用 fill 方法填充数据,但是这个方法不能填充引用类型的值,它实际上传入的是入参的引用,当你传入引用类型时,因此 二维数组常用 for循环创建,for循环也是效率最高的方法。

数组访问常用循环几维的数组常常就需要几次嵌套的循环,因此,我们一般使用 for 循环创建数组。

底层提供的数组增删方法

增加元素
  1. push() 方法向数组的末尾添加一个或多个元素,并返回新的长度。
  2. unshift() 方法向数组的开头添加一个或更多元素,并返回新的长度。
  3. splice() 方法向数组的指定位置添加元素,并返回被删除的元素。
    splice 方法有三个入参:1. 起始索引 2. 删除的元素个数 3. 新的元素
    arr.splice(1, 0, 3); 代表的是从索引1开始,删除0个元素,添加新元素3到1索引位置后
删除数组元素
  1. pop() 方法从数组的末尾删除一个元素,并返回该元素。
  2. shift() 方法从数组的开头删除一个元素,并返回该元素。
  3. splice() 方法从数组的指定位置删除元素。同上。

栈和队列 (Stack and Queue)

栈和队列是两种常见的数据结构,它们都用于存储数据,但它们在存储和取出数据上有所不同。zai栈是一种后进先出(LIFO)的数据结构,即后添加的元素先取出。 队列是一种先进先出(FIFO)的数据结构,即先添加的元素先取出。

在js中,我们可以使用数组来实现栈和队列。

对于栈来说,我们可以使用push()方法添加元素,使用pop()方法取出元素。也就是说只用这两个方法操作的数组,就可以实现栈的功能。

队列则使用push()方法添加元素,使用shift()方法取出元素。也就是说只用这两个方法操作的数组,就可以实现队列的功能。

链表 (Linked List)

链表是一种常见的数据结构,它由节点(Node)组成,每个节点包含数据元素和指向下一个节点的指针。链表是一种动态数据结构,它可以在任意位置添加或删除节点,而不需要重新分配内存。

链表和数组的区别在于,链表在内存中存储的元素是动态的,而数组在内存中存储的元素是静态的。

特性:链表的插入/删除效率较高,而访问效率较低;数组的访问效率较高,而插入效率较低。

树在计算机中是对现实中树的抽象,将树根抽象成根节点,叶子抽象成叶子节点,中间节点抽象成内部节点。
树根节点是唯一的,每个节点最多只能有一个父节点,每个节点最多只能有一个子节点。

关于树最重要的是二叉树的掌握:

二叉树是树结构中的一种,它的特点是每个节点最多有两个子节点。

数据域

左侧子结点(左子树根结点)的引用

右侧子结点(右子树根结点)的引用

相关推荐
Lorin 洛林11 分钟前
一文读懂 Agent Skills
前端·网络
newbe365241 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
KaMeidebaby8 小时前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
kyriewen9 小时前
我筛了 1400 个 Claude Code Skills,留下 5 个天天在用的
前端·ai编程·claude
JNX_SEMI9 小时前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
anOnion10 小时前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
随风一样自由10 小时前
【前端领域】2026最新前端领域全梳理(框架/工具/AI/跨端/底层标准/就业趋势)
前端·人工智能·前端框架
这是个栗子10 小时前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all
fei_sun10 小时前
黑洞路由(Null Route/空接口路由)
服务器·前端·javascript
大爱一家盟11 小时前
告别卡点BGM同质化 2026原创卡点音乐素材下载网站 TOP5 推荐
大数据·前端·人工智能