实验二 线性表的几种主要存储结果
2017-10-13 09:39
288 查看
1.顺序表——使用数组存储
(1)必须确定数组长度,且存储空间必须连续。
(2)存储结构为随机存取结构。
(3)按位查找、按值查找的时间复杂度分别为O(1)、O(n)。
(4)删除和插入操作的时间复杂度都为O(n)。需要移动大量元素,当元素个数多或每个元素占用的存储空间较多时,移动元素的开销大。
2.单链表
(1)存储结构为顺序存取结构。
(2)使用结点存放元素,需要另外开辟一个指针域的空间。
(3)不需要考虑长度。
(4)按位查找、按值查找的时间复杂度都为O(n)。
(5)删除和插入操作的时间复杂度都为O(n)。但不需要移动大量元素,且在给出指向链表中某个合适位置的指针后,插入和删除操作所需的时间仅为O(1)。
(6)必须定义析构函数,因为结点的存储空间是用运算符new申请的,释放类对象时无法自动释放这些空间。
3.双链表:与单链表类似,只是操作有所不同,是在单链表的每个结点中再设置一个指向其前驱结点的指针域。
4.静态链表——用数组来表示单链表(结构体数组)
(1)必须确定数组长度,且存储空间必须连续。
(2)按位查找、按值查找的时间复杂度都为O(n)。
(3)删除和插入操作的时间复杂度都为O(1),改进了在顺序表中需要大量移动元素的缺点。
5.间接寻址——是将数组和指针结合起来的一种方法(结构体指针数组)
(1)必须确定数组长度,且存储空间必须连续。
(2)按位查找、按值查找的时间复杂度分别为O(1)、O(n)。
(3)删除和插入操作的时间复杂度都为O(n),需要移动指向元素的指针。
(4)必须定义析构函数,因为结点的存储空间是用运算符new申请的,释放类对象时无法自动释放这些空间。
6.总结
(1)顺序表和链表的比较
由以上两者的特点:
①作为一般规律,若线性表需频繁查找却很少进行插入和删除操作,或其操作和“数据元素在线性表中的位置”密切相关时, 宜采用顺序表作为存储结构;若线性表需频繁进行插入和删除操作,则宜采用链表作为存储结构。
②作为一般规律,当线性表中元素个数变化较大或者未知时,最好使用链表实现;如果事先知道线性表的大致长度,使用顺序表的空间效率会更高。
(2)静态链表的删除和插入操作的时间复杂度都为O(1),改进了在顺序表中需要大量移动元素的缺点。
(3)间接寻址保持了顺序表随机存取的优点,虽然删除和插入操作的时间复杂度都为O(n),但当每个元素占用的空间较大时,比顺序表的插入和删除操作要快的多,改进了顺序表插入和删除操作的时间性能。
(1)必须确定数组长度,且存储空间必须连续。
(2)存储结构为随机存取结构。
(3)按位查找、按值查找的时间复杂度分别为O(1)、O(n)。
(4)删除和插入操作的时间复杂度都为O(n)。需要移动大量元素,当元素个数多或每个元素占用的存储空间较多时,移动元素的开销大。
2.单链表
(1)存储结构为顺序存取结构。
(2)使用结点存放元素,需要另外开辟一个指针域的空间。
(3)不需要考虑长度。
(4)按位查找、按值查找的时间复杂度都为O(n)。
(5)删除和插入操作的时间复杂度都为O(n)。但不需要移动大量元素,且在给出指向链表中某个合适位置的指针后,插入和删除操作所需的时间仅为O(1)。
(6)必须定义析构函数,因为结点的存储空间是用运算符new申请的,释放类对象时无法自动释放这些空间。
3.双链表:与单链表类似,只是操作有所不同,是在单链表的每个结点中再设置一个指向其前驱结点的指针域。
4.静态链表——用数组来表示单链表(结构体数组)
(1)必须确定数组长度,且存储空间必须连续。
(2)按位查找、按值查找的时间复杂度都为O(n)。
(3)删除和插入操作的时间复杂度都为O(1),改进了在顺序表中需要大量移动元素的缺点。
5.间接寻址——是将数组和指针结合起来的一种方法(结构体指针数组)
(1)必须确定数组长度,且存储空间必须连续。
(2)按位查找、按值查找的时间复杂度分别为O(1)、O(n)。
(3)删除和插入操作的时间复杂度都为O(n),需要移动指向元素的指针。
(4)必须定义析构函数,因为结点的存储空间是用运算符new申请的,释放类对象时无法自动释放这些空间。
6.总结
(1)顺序表和链表的比较
由以上两者的特点:
①作为一般规律,若线性表需频繁查找却很少进行插入和删除操作,或其操作和“数据元素在线性表中的位置”密切相关时, 宜采用顺序表作为存储结构;若线性表需频繁进行插入和删除操作,则宜采用链表作为存储结构。
②作为一般规律,当线性表中元素个数变化较大或者未知时,最好使用链表实现;如果事先知道线性表的大致长度,使用顺序表的空间效率会更高。
(2)静态链表的删除和插入操作的时间复杂度都为O(1),改进了在顺序表中需要大量移动元素的缺点。
(3)间接寻址保持了顺序表随机存取的优点,虽然删除和插入操作的时间复杂度都为O(n),但当每个元素占用的空间较大时,比顺序表的插入和删除操作要快的多,改进了顺序表插入和删除操作的时间性能。
相关文章推荐
- 实验二 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 数据结构|比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 《数据结构》实验二: 线性表综合实验——总结线性表的几种主要存储结果
- 《数据结构》实验二: 线性表综合实验——总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 实验二 总结线性表的几种主要存储方式
- 总结线性表的几种主要存储结构
- 数据结构之线性表的几种主要存储
- 几种常见的线性表存储结构
- 存储数据主要有哪几种
- oracle学习-存储过程返回一个值,和返回一个结果集
- python 调用mysql存储过程返回结果集
- 在存储过程A中调用存储过程B的结果
- 浅谈Teradata数据仓库的主要组成部分、功能、存储架构
- oracle调用存储过程和函数返回结果集
- 固态存储的几种用法