一 数据基本结构

一 数据结构基本概念

1、数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能够输入到计算机中并被计算机程序识别和处理的符号的集合。

2、数据元素: 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成、数据项是构成数据元素的不可分割的最小单位。例如:学生记录就是一个数据元素,它由姓名、学号、性别等数据项组成。

3、数据类型:数据类型是一个值的集合和定义在此集合上一组操作的总称。

3.1、原子类型:其值不可再分的数据类型。

3.2、结构类型:其值可以再分的数据类型。

3.3、抽象数据类型:抽象数据组织和与之相关的操作。

4 抽象数据类型(ADT):是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。通常用(数据对象、数据关系、基本操作集)这样的三元组来表示抽象数据类型。

 

二 数据结构:

结构:在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在某种关系,这种数据元素相互之间的关系称为结构。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选的逻辑结构,而算法的实现依赖与所采用的存储结构。

1、逻辑结构:

 

2、物理结构:

 

 

我们每天的编码中都会用到数据结构,因为数组是最简单的内存数据结构,下面是常见的数据结构: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

JS数据结构与算法

posted @ 2020-12-21 13:52  TerryMin  阅读(616)  评论(0编辑  收藏  举报