先来复习一下什么是计算机里面的数据结构:
数据结构 = 逻辑结构+存储结构
逻辑结构分为四种:
1.集合---数据元素间没有任何关系
2.线性结构---数据元素间有线性关系,所谓线性关系是指,除了第一个元素外,其他元素有且只有一个前驱,除最后一个元素外,其他元素有且仅有一个后继。
常见的线性结构有:线性表、数组、栈、队列、双队列、串
3.树结构---数据元素间有层次关系。属于非线性结构
4.图结构---数据元素间有网状关系 。属于非线性结构
存储结构常见的有以下几种:
1.顺序存储结构
把逻辑上相连的结点存储在物理上连续的存储单元中,结点之间的关系有由存储单元的连接关系来体现。其优点是本身占用很少的存储空间,缺点是由于只能用相连的一块
存储单元,可能会产生很多存储碎片。
2.链式存储结构
将结点所占的存储单元分为两部分,一部分存储结点本身的信息,及数据项。另一部分存储该结点后续结点所对应的存储单元的地址,即指针项。优点,不会出现碎片现象,
充分利用所有的存储单元,缺点是每个结点占用较多的存储空间。例如线性表
3.索引存储结构
索引存储结构是用结点的索引号来确定结点的存储地址,优点是检索速度款,缺点是增加了附加的索引表,会占用较多的存储空间。
4.散列存储结构
又称为HASH存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术。散列存储的基本思想是:由结点的关键码值决定结点的存储地址。
输入x ->f(x)(散列函数)->index(位置)。优点是检索,增加和三处结点的操作速度快,缺点是采用不好的散列函数可能会出现结点单元的碰撞,而需要附加时间和空间开销。
5.二叉链表
二叉链表是非线性结构,在树形结构中,树结点的存储单元分为三个部分,第一个部分存储结点本身的信息,第二部分存储该结点的左子结点,第三部分存储该结点的下一个兄弟结点,如果该树为二叉树,则第二部分和第三部分分别存储左右子结点