数据结构与算法(顺序表)
2020-03-08 11:43
901 查看
根据线性表的实际存储方式,分为两种实现模型:
顺序表,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。
链表,将元素存放在通过链接构造起来的一系列存储块中。
顺序表的基本形式
顺序表的结构
两种基本实现的方式
图a为一体式结构,存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。
图b为分离式结构,表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。
元素存储区替换
一体式结构由于顺序表信息区与数据区连续存储在一起,所以若想更换数据区,则只能整体搬迁,即整个顺序表对象(指存储顺序表的结构信息的区域)改变了。
分离式结构若想更换数据区,只需将表信息区中的数据区链接地址更新即可,而该顺序表对象不变。
元素存储区扩充
扩充的两种策略:
-
每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。
特点:节省空间,但是扩充操作频繁,操作次数多。 -
每次扩充容量加倍,如每次扩充增加一倍存储空间。
特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式。
顺序表操作
增加元素
-
尾端加入元素,时间复杂度为O(1)
-
非保序的加入元素(不常见),时间复杂度为O(1)
-
保序的元素加入,时间复杂度为O(n)
删除元素
-
删除表尾元素,时间复杂度为O(1)
-
非保序的元素删除(不常见),时间复杂度为O(1)
-
保序的元素删除,时间复杂度为O(n)
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 11. C#数据结构与算法 -- 顺序队列
- java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)
- 数据结构与算法---动态数组(3)顺序队列ArrayQueue、循环队列ArrayQueueLoop
- 数据结构与算法---动态数组(2)顺序栈ArrayStack、双端栈ArrayStackDoubleEnd
- 数据结构与算法(二)-线性表之单链表顺序存储和链式存储
- 12. C#数据结构与算法 -- 顺序栈
- JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
- java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)
- 数据结构与算法——查找(顺序查找、二分查找)
- 数据结构与算法(Java描述)-6、栈的基本概念以及顺序栈的实现
- 数据结构与算法系列-栈-顺序栈
- 数据结构与算法(5)顺序栈II
- 2. C#数据结构与算法 -- 查找算法(顺序查找,哈希查找,二分查找(折半),索引,二叉)
- java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)
- Java基础 - java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)
- 数据结构与算法学习总结-线性表的顺序存储与实现
- 《数据结构与算法》——线性表之顺序表(SqList)总结
- 8. C#数据结构与算法 -- 线性存储结构(线性表之顺序表,数组实现)
- 数据结构与算法 python--第二节 顺序表
- 数据结构与算法(二)线性表的顺序表示