开发中常用的数据结构

在软件开发中,常用的数据结构具有各自的场景和应用。以下是一些常见的数据结构、它们的应用场景以及相应的代码示例:

  1. 数组(Array):

    • 场景:用于存储一组相同类型的元素,通过索引访问元素。
    • 例子:
      let numbers = [1, 2, 3, 4, 5];
      console.log(numbers[2]); // 输出 3
      
  2. 链表(Linked List):

    • 由节点组成,每个节点包含数据和指向下一个节点的引用
    • 场景:适用于频繁的插入和删除操作。
    • 例子:
      class Node {constructor(data) {this.data = data;this.next = null;}
      }let list = new Node(1);
      list.next = new Node(2);
      
  3. 栈(Stack):

    • 后进先出(LIFO)的数据结构
    • 场景:处理函数调用、表达式求值、撤销操作,浏览器的前进后退历史记录
    • 例子:
      let stack = [];
      stack.push(1);
      stack.push(2);
      let poppedItem = stack.pop(); // 输出 2
      
  4. 队列(Queue):

    • 先进先出(FIFO)的数据结构。
    • 场景:处理任务调度、广度优先搜索等。打印队列,任务调度
    • 例子:
      let queue = [];
      queue.push(1);
      queue.push(2);
      let dequeuedItem = queue.shift(); // 输出 1
      
  5. 树(Tree):

    • 用于表示层次关系的数据结构
    • 场景:用于表示层次关系,例如 DOM 树、文件系统树、二叉树。
    • 例子:
      class TreeNode {constructor(value) {this.value = value;this.children = [];}
      }let root = new TreeNode(1);
      root.children.push(new TreeNode(2));
      
  6. 图(Graph):

    • 由节点和边组成的数据结构
    • 场景:表示网络结构、社交网络等。社交网络中的好友关系。
    • 例子:
      class Graph {constructor() {this.nodes = [];this.edges = [];}
      }let socialNetwork = new Graph();
      // 添加节点和边...
      
  7. 哈希表(Hash Table):

    • 通过散列函数将关键字映射到数组的索引。
    • 场景:用于快速查找、存储键值对。
    • JavaScript 中的对象,键值对 { “name”: “John”, “age”: 25 }。
    • 例子:
      let hashMap = {};
      hashMap["name"] = "John";
      console.log(hashMap["name"]); // 输出 "John"
      
  8. 堆(Heap):

    • 用于快速找到最大或最小元素的数据结构。
    • 场景:用于优先队列、堆排序等。
    • 例子:
      let minHeap = [3, 5, 8, 2, 1];
      // 实际应用中可能使用专门的堆数据结构
      
  9. 集合(Set)和映射(Map):

    • 集合是不重复元素的集合。
    • 映射是键值对的集合。
    • 场景:集合用于存储唯一元素,映射用于存储键值对。
    • 例子:
      let uniqueNumbers = new Set([1, 2, 3, 1]);
      let keyValueMap = new Map();
      keyValueMap.set("name", "Alice");
      
  10. 链表哈希表(LinkedHashMap):

    • 哈希表和链表的结合,用于保持元素的插入顺序。
    • 场景:保持元素的插入顺序。Java 中的 LinkedHashMap。
    • 例子:在某些编程语言中,有专门的实现。
  11. Trie(字典树):

    • 用于高效存储和搜索字符串集合。
    • 场景:用于高效存储和搜索字符串集合。自动完成功能,单词搜索树。
    • 例子:
      class TrieNode {constructor() {this.children = {};this.isEndOfWord = false;}
      }let trie = new TrieNode();
      // 添加单词、搜索单词...
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习如何入门?

深度学习是一个广泛而深入的领域,入门可能看起来有些令人望而却步。然而,通过有条理地学习基础知识和逐步实践,您可以有效地掌握深度学习。以下是入门深度学习的建议步骤: 1. 强化基础知识 数学基础:深入学习线性代数…

Shell - 学习笔记 - 2.8 - Shell字符串详解

字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)。 字符串可以由单引号 包围,也可以由双引号" "包围,也可以不…

学术名词积累和解释(机器人感知,运动规划,控制领域)——那些没人告诉你的专用名词

背景和初衷: 刚入门的学术小白们在阅读文献的过程中,总会遇到一些默生涩难懂但是通用的学术名词。例如什么 proactive and reactive, nonholonomic and holonomic 。 这里为了方便大家,总结和解释自己阅读学术文章过程中遇到的机器人领域的相…

2024-02-01 思考-关于商业思维和技术实现之间的关系

摘要: 最近在持续的进行商业推动,对于商业行为之下,与技术实现之间的关系,有了更为深刻的认知。 本文做下简单的记录。 商业思维: 什么是商业思维?很有意思的问题,好像除了商业思维,还有一堆其他迥然相反…

基于tidevice实现iOS app自动化使用详解

目录 1、IOS自动化工具概述 2、tidevice工具的原理和使用 2.1、tidevice的原理 2.2、tidevice实现的功能 2.3、tidevice的安装 2.4、tidevice的使用 2.4.1、设备管理 1、查看已连接的设备的列表 2、检测设备连接状态 3、等待设备连接,只要有就连接就结束监…

滑动一整屏

需求:用户通过鼠标滚轮滑动的时候一整屏进行翻页。 参考网站效果 微派网络 实现思路: 1.首先我们需获取可视区域的高度 document.documentElement.clientHeight; 2.根据动态设置top属性即可进行翻页。 3.需判断上滑还是下滑 根据onmousewheel滚轮事…

2024-01-06-AI 大模型全栈工程师 - 如何训练百亿参数大模型

摘要 2024-01-06 周六 杭州 晴 本节内容: 讲座模式,学习大模型训练的相关流程。 课程内容 1. Transformer 回顾 2. 模型架构-生成式 3. 预训练数据的构建 4. 中文字典的构建 4. 预训练目标的构建 5. 预训练相关-预训练策略 6. 预训练相关-并行化训练 7. 预训练…

2024/2/1 备战蓝桥杯 3-3 二叉树

目录 二叉树的遍历 B3642 二叉树的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 完全二叉树的权值 0完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 美国血统 American Heritage P1827 [USACO3.4] 美国血统 American Heritage - 洛谷 | 计算机科学教育新生态 (luogu.c…

搭建高效企业培训平台:教育系统源码开发详解

为了更好地满足企业培训的需求,许多组织纷纷转向数字化教育,搭建高效的企业培训平台成为当务之急。本篇文章,小编将为您讲解教育系统源码的开发细节,为搭建一个功能强大、灵活高效的企业培训平台提供详尽的指南。 一、教育系统的…

Django响应(一)

一、HttpResponse与JsonResponse 1.1、HttpResponse 官网:https://docs.djangoproject.com/zh-hans/4.1/ref/request-response/#django.http.HttpResponse 返回给浏览器端的响应对象 from django.http import HttpResponse response = HttpResponse("Heres the text o…

程序的内存模型

师从黑马程序员 内存分区模型 内存大方向划分为4个区域 1、代码区:存放函数体的二进制代码,由操作系统管理的 2、全局区:存放全局变量环和静态变量以及常量 3、栈区:由编译器自动分配释放,存放函数的参数值&#…

代码随想录算法训练营第三十六天|509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

509. 斐波那契数 public static int fib(int n) {// 找出最后一步// 定义损失函数 定义记忆化存储基本单元// 状态转移方程 f(n) f(n-2)f(n-1); n > 0// 边界 (递归过程中需要判断)// 初始化 (在未递归之前需要处理)// 返回答案if (n 0) {return 0;}if (n 1) {return 1;…

H12-811_503

503.如下图所示,下列说法正确是?( ) A.主机A和主机B的广播地址相同 B.主机A可以ping通主机B C.主机A和主机B不能获取对方的MAC地址 D.主机A的ARP缓存中存在如下条目10.0.12.5 MAC-B 答案:C 注释: 两个主机IP地址的网…

四大组件 - ContentProvider

参考&#xff1a;Android 这 13 道 ContentProvider 面试题&#xff0c;你都会了吗&#xff1f; 参考&#xff1a;《Android 开发艺术探索》 第 9.5 节&#xff08;ContentProvider 的工作过程&#xff09; 参考&#xff1a;内容提供者程序 参考&#xff1a;<provider>&g…

Nucleosome, Recombinant Human, H2BK120ub1 dNuc, Biotinylated

EpiCypher&#xff08;国内授权代理商欣博盛生物&#xff09;是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher生产的在E. coli中表达的重组人单核小体(组蛋白H2A、H2B、H3和H4各2个;accession numbers:H2A-P04908;H2B-O60814;H3.1-P68431;H4…

SpringMVC处理ajax请求之@ResponseBody注解,将后端数据响应到浏览器

上一篇文章讲到SpringMVC处理ajax请求用到的RequestBody注解SpringMVC处理ajax请求&#xff08;RequestBody注解&#xff09;&#xff0c;ajax向后端传递的数据格式详解-CSDN博客&#xff0c;这个注解帮我们解决了如何将客户端的数据通过json数据传递到服务器&#xff0c;简单说…

数据探索与可视化:可视化分析数据关系-中

目录 一、前言 二、介绍 Ⅰ.一个分类变量和一个连续变量 Ⅱ.两个分类变量的一个连续变量 Ⅲ.两个分类变量和两个连续变量 Ⅳ.一个分类变量和多个连续变量 ①.平行坐标轴 ②.矩阵散点图 三、结语 一、前言 在做数据分析的时候&#xff0c;很少会遇到连续变量和分类变量…

PyTorch如何支持 GPU 加速计算

在 PyTorch 中&#xff0c;torch.Tensor 是核心的数据结构&#xff0c;它与 NumPy 的 ndarray 类似&#xff0c;用于存储和操作多维数据。但与 NumPy 不同的是&#xff0c;PyTorch 的 Tensor 除了能在 CPU 上运行之外&#xff0c;还能够无缝地利用 GPU 进行计算加速。 GPU 加速…

读千脑智能笔记01_新皮质

作者简介 1988年至1992年&#xff0c;创造了平板电脑GridPad&#xff0c;它属于第一批平板电脑 1992年&#xff0c;成立了Palm公司&#xff0c;之后在长达10年的时间内&#xff0c;设计了一些最早的掌上电脑和智能手机&#xff0c;如PalmPilot和Treo 在2002年创立了红木神经科学…

《HTML 简易速速上手小册》第9章:HTML5 新特性(2024 最新版)

文章目录 9.1 HTML5 新增标签和属性9.1.1 基础知识9.1.2 案例 1&#xff1a;创建一个结构化的博客页面9.1.3 案例 2&#xff1a;使用新的表单元素创建事件注册表单9.1.4 案例 3&#xff1a;创建一个具有高级搜索功能的搜索表单 9.2 HTML5 表单增强9.2.1 基础知识9.2.2 案例 1&a…