Js 数据结构全面讲解

一、数组

1、定义:数组是一种数据结构,用于存储有序的元素集合。

2、操作:


//创建一个空数组
let arr = [];

//添加元素
arr.push(1);
arr.push(2);

//获取元素
console.log(arr[0]); //1

//获取数组长度
console.log(arr.length); //2

//删除元素
arr.splice(0, 1); //从下标0开始删除1个元素

//遍历数组
for(let i = 0; i < arr.length; i++){
    console.log(arr[i]);
}

3、应用:

使用数组存储多个元素,实现数据的批量操作,如购物车中存储多个商品,网页中存储多个评论等。

二、栈

1、定义:栈是一种特殊的数据结构,只能在数组的末尾添加或删除元素。

2、操作:


//创建一个栈
let stack = [];

//添加元素
stack.push(1);
stack.push(2);

//删除元素
stack.pop();

//获取栈顶元素
console.log(stack[stack.length - 1]);

//判断栈是否为空
console.log(stack.length === 0);

3、应用:

在计算机程序中,栈常用于配合递归实现函数调用、括号匹配等操作。

三、队列

1、定义:队列是一种特殊的数据结构,只能在数组的末尾添加元素,在数组的开头删除元素。

2、操作:


//创建一个队列
let queue = [];

//添加元素
queue.push(1);
queue.push(2);

//删除元素
queue.shift();

//获取队列头部元素
console.log(queue[0]);

//判断队列是否为空
console.log(queue.length === 0);

3、应用:

队列常用于实现广度优先搜索算法,并且在计算机中还有很多其他的应用场景,如操作系统中的任务队列、打印机中的打印队列等。

四、链表

1、定义:链表是一种数据结构,由节点组成,每个节点保存数据和指向下一个节点的指针。

2、操作:


//定义一个节点
class Node {
    constructor(val, next = null) {
        this.val = val;
        this.next = next;
    }
}

//创建一个链表
let head = new Node(1);
head.next = new Node(2);
head.next.next = new Node(3);

//遍历链表
let cur = head;
while(cur){
    console.log(cur.val);
    cur = cur.next;
}

//在链表中插入节点
let newNode = new Node(4);
newNode.next = head.next;
head.next = newNode;

//在链表中删除节点
head.next = head.next.next;

3、应用:

链表常用于实现LRU缓存、哈希表中的拉链法等。

五、树

1、定义:树是一种数据结构,由节点和边组成,每个节点保存数据,并指向零或多个子节点。

2、操作:


//定义一个节点
class Node {
    constructor(val, children = []) {
        this.val = val;
        this.children = children;
    }
}

//创建一个树
let root = new Node(1);
root.children = [new Node(2), new Node(3)];

//遍历树-深度优先搜索
function DFS(root) {
    console.log(root.val);
    for(let child of root.children){
        DFS(child);
    }
}
DFS(root);

//遍历树-广度优先搜索
function BFS(root) {
    let queue = [root];
    while(queue.length){
        let node = queue.shift();
        console.log(node.val);
        for(let child of node.children){
            queue.push(child);
        }
    }
}
BFS(root);

3、应用:

树的应用广泛,如在页面中渲染组件、文件系统中的目录结构、计算机网络中的路由表等。

六、图

1、定义:图是一种数据结构,由点和边组成,每个点可以与其他点直接相连。

2、操作:


//定义一个点
class Node {
    constructor(val, neighbors = []) {
        this.val = val;
        this.neighbors = neighbors;
    }
}

//创建一个图
let node1 = new Node(1);
let node2 = new Node(2);
let node3 = new Node(3);
let node4 = new Node(4);
node1.neighbors = [node2, node4];
node2.neighbors = [node1, node3];
node3.neighbors = [node2, node4];
node4.neighbors = [node1, node3];

//遍历图-深度优先搜索
let visited = new Set();
function DFS(node) {
    visited.add(node);
    console.log(node.val);
    for(let neighbor of node.neighbors){
        if(!visited.has(neighbor)){
            DFS(neighbor);
        }
    }
}
DFS(node1);

//遍历图-广度优先搜索
function BFS(node) {
    let queue = [node];
    visited.add(node);
    while(queue.length){
        let curr = queue.shift();
        console.log(curr.val);
        for(let neighbor of curr.neighbors){
            if(!visited.has(neighbor)){
                visited.add(neighbor);
                queue.push(neighbor);
            }
        }
    }
}
BFS(node1);

3、应用:

在现实生活中,图的应用非常多,如社交网络中的人际关系、地图中的路径规划、路网中的交通流等。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/289598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 03:03
下一篇 2024-12-24 03:03

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • 数据结构与算法基础青岛大学PPT解析

    本文将从多个方面对数据结构与算法基础青岛大学PPT进行详细的阐述,包括数据类型、集合类型、排序算法、字符串匹配和动态规划等内容。通过对这些内容的解析,读者可以更好地了解数据结构与算…

    编程 2025-04-29
  • Python zscore函数全面解析

    本文将介绍什么是zscore函数,它在数据分析中的作用以及如何使用Python实现zscore函数,为读者提供全面的指导。 一、zscore函数的概念 zscore函数是一种用于标…

    编程 2025-04-29
  • 全面解读数据属性r/w

    数据属性r/w是指数据属性的可读/可写性,它在程序设计中扮演着非常重要的角色。下面我们从多个方面对数据属性r/w进行详细的阐述。 一、r/w的概念 数据属性r/w即指数据属性的可读…

    编程 2025-04-29
  • Python计算机程序代码全面介绍

    本文将从多个方面对Python计算机程序代码进行详细介绍,包括基础语法、数据类型、控制语句、函数、模块及面向对象编程等。 一、基础语法 Python是一种解释型、面向对象、动态数据…

    编程 2025-04-29
  • 数据结构学生成绩管理系统

    在现代教育中,学生成绩的管理已经成为了一个不可或缺的部分。借助数据结构,一个高效、可靠的学生成绩管理系统可以被轻松实现。 一、数据结构的选择 在构建学生成绩管理系统时,选择合适的数…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • Matlab二值图像全面解析

    本文将全面介绍Matlab二值图像的相关知识,包括二值图像的基本原理、如何对二值图像进行处理、如何从二值图像中提取信息等等。通过本文的学习,你将能够掌握Matlab二值图像的基本操…

    编程 2025-04-28

发表回复

登录后才能评论