数据结构_基础

github地址:
https://github.com/arkulo56/thought/blob/master/software/dataStruct/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%9F%BA%E7%A1%80.md


当数据从数据库中读取出来后,在内存中除了数组还可以如何操作数据????因为数组只能一个个的循环!!


单位换算

1 bit = 0/1 二进制数据
1 byte = 8 bit
1 字母 = 1 byte = 8 bit
1 汉字 = 2 byte = 16 bit

1G = 1024M(兆字节) = 1024*1024KB(千字节) = 1024*1024*1024B(字节) = 1024*1024*8bit(比特)

基本概念和术语

数据

反映客观事物的信息的集合,是信息的载体,能够被计算机识别、存储和加工处理

数据元素

集合中的个体,数据的基本单位,一个数据元素可以有多个数据项组成(字段、域、属性)

数据项

是具有独立含义的最小数据单位

数据结构

数据元素之间的逻辑关系

存储结构

数据元素及其关系在计算机存储器内的表示(大多数情况下都指内存)

算法

数据的运算,即对数据施加的操作

身份证数据管理

数据元素:每一个身份证信息是一个数据元素
数据项:姓名、性别、身份证号和相片
数据结构:

  • 逻辑结构:线性表
  • 物理结构:数组(顺序存储)
  • 算法:增加、删除、查找

数据的逻辑结构

特征

  • 从逻辑关系上描述数据,与数据的存储无关
  • 从具体问题抽象出来的数据模型
  • 与数据元素本身的形式、内容无关

逻辑结构分类

集合结构

数据元素间无任何关系

数据结构_基础_第1张图片
https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/1.png

线性结构

元素之间的关系是1:1的

https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/2.png
https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/2.png
  • 有且只有一个初始节点
  • 最多有一个前驱,最多有一个后继(也可以没有)
  • 插入或删除一个节点后仍满足前两条

例如:线性表


非线性结构

元素之间的关系是1:n的

数据结构_基础_第2张图片
https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/3.png
  • 一个节点可以多个直接后继(除叶子节点外),但只有一个直接前驱(除根节点外)

例如:一般树、二叉树、森林


图状结构

元素之间的关系是n:n的

数据结构_基础_第3张图片
https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/4.png
  • 一个节点可以有多个直接后继,也可以有多个直接前驱

数据结构的研究对象

  • 非数值数据之间的结构关系
  • 运算操作以插入、删除、查找、更改、排序为主

存储结构

数据结构在内存中的存储结构

原理

简单的线性的数据结构直接用顺序和链式存储就可以搞定,例如:队列,栈、二叉树

复杂的数据结构则需要顺序和链式复合才能存储,例如:树(度大于2)、图(采用邻接矩阵等)

顺序存储

  • 位置即关系,节省空间
  • 查询快,插入删除慢
  • 内存碎片(内部碎片)

链式存储

  • 数据元素要包含关系,空间开销大
  • 插入删除快,查询则需遍历链表
  • 没有碎片

注:头节点可以不包含数据,也可以包含链表的长度。其有助于删除第一个元素,或者在第一个元素前插入数据

注:头指针是指向头节点的指针,无论链表是否为空,都存在头指针

循环链表就是尾节点的next指向头节点,这样可以循环遍历


你可能感兴趣的:(数据结构_基础)