数据结构:相互之间存在一种或多种特定关系的数据元素的集合
算法:对结构中的数据进行各种处理
应用方面:
1. 现实世界数据存储
2. 程序员的工具
3. 现实世界的建模
数据:所有能输入到计算机中去的描述客观事物的符号,数据不仅包括整型、实数等数值类型,包括声音、图像、视频等非数值类型 数据项:有独立含义的数据最小单位,也称域 数据对象:相同特性数据元素的集合,是数据的一个子集 数据元素:数据的基本单位,也称结点或记录
1 数据结构 优点 缺点 2 数组 使用方便,查询效率、比链表高,内存为一连续的区域 大小固定,不适合动态存储,不方便动态添加 3 有序数组 比无序的数组查找快 删除和插入慢,大小固定 4 栈 提供后进先出的存取方式 存取其他项很慢 5 队列 提供先进后出的存取方式 存取其他项很慢 6 链表 链表实现数据元素储存的顺序储存,是连续的 因为含有大量的指针域,所以占用空间大,同时因为只有头结点(后面说明)是明确知道地址的,所以查找链表中的元素需要从头开始寻找,非常麻烦 7 二叉树(树平衡的情况下) 查找、 插入、 删除都快 删除算法复杂 8 红黑树(平衡树) 查找、 插入 、删除都快 算法复杂 9 2-3-4树(平衡树) 查找 、插入、 删除都快 算法复杂10 哈希表 插入快、通过关键字存取快 删除慢11 堆 插入 删除快、对最大数据项的存取很快 对其他数据项存取慢12 图 对现实世界建模 有些算法慢且复杂复制代码
集合结构:集合结构的数据元素除"同属于一个集合"外,他们之间没有其他关系
线性结构:线性结构中的数据元素之间一对一的关系 如线性表、栈、队列
树形结构:树形结构中的数据元素之间存在一对多的层次关系 如树
图形结构:图形结构中的数据元素多对多的关系 如图
任何一个结点都可能和其它结点有关系
数据的逻辑结构分两大类: 线性结构 和 非线性结构 数据的存储方法有四种: 顺序存储方法、链接存储方法、索引存储方法和散列存储方法 常见的运算:插入、删除、修改、查找、排序顺序存储:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构
优点:
在结点等长时可以随机存取
存储密度高节省存储空间
用结点的物理次序反映结点之间的逻辑关系
缺点:
插入和删除结点时要移动大量的结点
必须静态分配连续空间
链接存储:在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)
索引存储:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。索引表由若干索引项组成
优点:
插入和删除比较灵活,不需要大量移动结点
动态分配空间比较灵活,不需要预先申请最大的连续空间
缺点:
增加指针的空间开销
检索必须沿链进行,不能随机存取
散列存储:散列存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术
索引表由若干索引项组成。如果每个节点在索引表中都有一个索引项,则该索引表就被称为稠密索引。若一组节点在索引表中只对应于一个索引项,则该索引表就成为稀疏索引。索引项的一般形式一般是关键字、地址
抽象数据类型的好处:抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算,使用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,实现了信息隐藏以下是对内容的总结: