几种线性表的简单比较

几种线性表的简单比较


顺序表

用一段地址连续的存储单元依次存储线性表的数据元素,通常用一维数组来实现顺序表。顺序表利用数组元素在物理位置(即数组下标)上的邻接关系来表示线性表中数据元素之间的逻辑关系,静态存储分配。插入和删除操作需移动大量元素,时间复杂度为O(n);表的容量难以确定;造成存储空间“碎片”。

单链表

用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。

循环链表

将单链表中的终端结点的指针域由空指针改为指向头结点,是的整个单链表形成一个环,从而成为一个循环链表。

一般的,若线性表需频繁查找却很少进行插入和删除操作,或其他操作和“数据元素在线性表中的位置”密切相关时,宜采用顺序表作为存储结构;若线性表需频繁进行插入和删除操作,则宜采用链表作为存储结构。当线性表中元素个数变化较大或者未知时,最好使用链表实现;如果事先知道线性表的大致长度,使用顺序表的空间效率会更高。

静态链表

用数组来表示单链表,用数组元素的下标来模拟单链表的指针。在插入和删除操作时,只需要修改游标,不需要移动表中的元素,从而改进了在顺序表中插入和删除操作需要移动大量元素的缺点,但存在连续存储分配带来的表长度难以确定的问题。

间接寻址

将数组和指针结合起来的一种方法,将数组中存储元素的单元改为存储指向该元素的指针。

保持了顺序表随机存取的特点,同时改进了插入和删除操作的时间性能,但没有解决联系存储分配带来的表长难以确定的问题。

 

猜你喜欢

转载自blog.csdn.net/smart_j_king/article/details/80215074