实验二 线性表的几种主要存储结果
来源:互联网 发布:php 在线考试 编辑:程序博客网 时间:2024/06/10 23:39
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),但当每个元素占用的空间较大时,比顺序表的插入和删除操作要快的多,改进了顺序表插入和删除操作的时间性能。
- 实验二 线性表的几种主要存储结果
- 实验二 比较总结线性表的几种主要存储结果
- 实验二 比较总结线性表的几种主要存储结果
- 《数据结构》实验二: 线性表综合实验——总结线性表的几种主要存储结果
- 《数据结构》实验二: 线性表综合实验——总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 比较总结线性表的几种主要存储结果
- 实验二 总结线性表的几种主要存储方式
- 实验二 总结线性表的几种主要存储结构
- 数据结构|比较总结线性表的几种主要存储结果
- 数据结构之线性表的几种主要存储
- 总结线性表的几种主要存储结构
- 数据结构|总结线性表的几种存储结果
- 《数据结构》实验二:线性表的实验
- Jarvisoj 逆向总结
- python学习日记(一)
- springmvc返回json
- OKhttp
- H5的新属性contenteditable
- 实验二 线性表的几种主要存储结果
- airnbn规范示例
- 获取客户端ip地址工具类
- 在ie6,7,8中,样式编写中特有的写法,
- 昨晚的一些感触
- 人工智能可以解决现实世界哪些业务需求?
- asp.net mvc重写JsonResult返回消息
- OpenCV中C++函数imread读取图片的问题
- Android SDK的安装与环境变量配置问题