zoukankan      html  css  js  c++  java
  • JS数据结构

    一 数据结构:

    数据结构是计算机存储、组织数据的方式。数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装

    我们每天的编码中都会用到数据结构,因为数组是最简单的内存数据结构,下面是常见的数据结构:

    • 数组(Array)
    • 栈(Stack):栈是一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。(堆叠的盘子例子)。
    • 队列(Queue):是一种特殊的线性表;特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。即先进先出(FIFO)。(银行窗口排队例子)
    • 堆(Heap):存放引用类型(如对象、数组、函数等),值大小不固定,栈内存中存放的地址指向堆内存中的对象; 堆是一种二叉树结构。它的存取数据的方式与书架非常相似。堆的特点是以“键值对”存储方式,存取方式和顺序无关。
    • 链表(Linked List)
    • 树(Tree)
    • 图(Graph)
    • 散列表(Hash)

    其中,栈和队列是一种类似数组的数据结构,它们之间的区别仅仅体现在数据项的插入和移除的方式上。链表、树和图则是另一种节点与节点之间维持引用关系的数据结构。散列表(也称哈希表)依赖散列函数来保存和定位数据。

    就复杂性而言,栈和队列是最简单的两种,并且二者都可以通过链表来进行构造。树和图则是最复杂的,因为它们继承了链表的概念。散列表需要利用这些数据结构来可靠地执行。就执行效率而言,链表在对数据的记录和排序上表现最好,同时散列表也更加擅长查找和提取数据。

    二 JavaScript数据结构:

    栈内存:javaScript中,数据类型分为基本数据类型和引用数据类型,基本数据类型七种包含:null、undefined、string、number、boolean、symbol、bigint 这几种。在内存中这几种数据类型存储在栈空间,我们按值访问。基本类型都存储在栈内存中,是大小固定并且有序的

    堆内存:一般由操作人员(程序员)分配释放,若操作人员不分配释放,将由OS(操作系统)回收释放。分配方式类似链表。堆存储在二级缓存中。JavaScript 的数据类型除了原始类型,还有一类是 Object 类型,它包含:

    • Object
    • Function
    • Array
    • Date
    • RegExp

    三 数据结构分类:

    1. 线性结构: 数据元素之间是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。
    2. 非线性结构:中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系(例如:球形,网型)。根据关系的不同,可分为层次结构和群结构。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。(其中多维数组是由多个一维数组组成的,所以不再是线性结构)

    参考链接:

    JS数据结构分类:https://blog.csdn.net/huangpb123/article/details/103645846

    栈,堆,队列深入理解:https://blog.csdn.net/huangpb123/article/details/103646184

    JS数据结构实现:https://www.cnblogs.com/jaxu/tag/JavaScript%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/ 

  • 相关阅读:
    hdu4549(费马小定理 + 快速幂)
    java 四种实现延迟加载的方法
    浅谈java缓存
    JavaWeb实现文件上传下载功能实例解析
    java分页之页面分页
    浅析Java开发模式—Model1、Model2和三层
    构建一个简单的基于MVC模式的JavaWeb
    Java中MVC详解以及优缺点总结
    Servlet
    通过JDBC进行简单的增删改查(以MySQL为例)
  • 原文地址:https://www.cnblogs.com/terrymin/p/14167513.html
Copyright © 2011-2022 走看看