数据结构

什么是数据

  1. 程序设计的实质是对确定问题,选择一种好的结构,加上设计一种好的算法。
  2. 程序设计 = 数据结构 + 算法
  3. 什么是数据:数据是描述客观事物的符号
  4. 数据 = 符号
  5. 1、可以输入到计算机中
  6. 2、可以被计算机识别所处理
  7. 数据:
  8. 数据元素:数据的基本单位,也称为结点或者是记录
  9. 数据对象:相同特性的数据元素的集合,是数据的一个子集
  10. 数据项:独立含义的数据的最小单位
  11. 数据的目的是存储,存储的目的是:后期的再利用
  12. const a = [1,2,3,4];
  13. const Salary = 100;
  14. const Student = ['张三','李四','王五'];
  15. 我们要选取一种好的方式来存储数据。
  16. 简单的数据,我们可以用变量或者是数组对数据进行存储
  17. 如果有一个复杂的数据:
  18. 无法从数组里去体现数据之间的逻辑关系,后期无法再利用
  19. 如何存储具有复杂关系的数据更有助于后期对数据的再利用
  20. 数据结构的主要作用是:阐述关系
  21. 结构:简单理解就是关系,不同的数据元素之间不是独立的,而是存在特定关系的。
  22. 逻辑结构:数据对象中数据元素之间的互相关系
  23. 四种:集合结构、线性结构、树形结构、图形结构
  24. 物理结构:数据元素存储到计算机中的存储器。内存而言
  25. 两种:顺序存储、链式存储
  26. 数据的存储结构应该正确反应数据元素之间的逻辑关系
  27. 对象是暴露行为,数据结构是暴露数据
  28. JS的数组不是真正意义上的数组
  29. 数组:在内存中用一串连续的区域来存放一些值,数组是相同类型数据元素的有序集合。
  30. 数组是由相同类型的元素的集合组成的数据结构。
  31. 连续内存
  32. JS的数组元素可以是任意类型,JS中的内存地址是不连续的
  33. 数组的有点:
  34. 1、按照索引查询元素的时候速度很快
  35. 2、存储大量的数据
  36. 3、按照索引去遍历数组
  37. 4、定义方便,访问很灵活
  38. 数组的缺点:
  39. 1、根据内容查找会很慢
  40. 2、数组的大小一经确定不能改变的,不适合动态存储
  41. 3、数组只能存储相同类型的数据
  42. 4、增加、删除元素的效率慢

集合结构

  1. 集合结构:数据元素同属于一个集合,他们之间没有其他的关系。他们的共同属性是:“同属于一个集合”。

image.png

线性结构

  1. 线性结构:最典型的数据关系是一对一,线性结构是一种有序数据的集合。行因素。
  2. 除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的。
  3. 特点:
  4. 1、必存在一个第一个元素
  5. 2、必存在最后的一个元素
  6. 3、除最后一个元素外,其他的数据元素均有一个唯一的“后续”。
  7. 4、除第一个元素之外,其他数据元素均有一个唯一的前驱。
  8. 数组就是一个线性结构,栈,队列,链表

image.png

树形结构

  1. 典型的树形结构:DOM

image.png

图形结构

  1. 典型的图形结构:导航

image.png

顺序存储

image.png

链式存储结构

image.png

常见的数据结构

image.png