总结线性表的几种主要存储结构

1.顺序表:线性表的顺序存储结构称为顺序表,是用一段地址连续的存储单元依次存储数据元素的,通常用一维数组来实现。顺序表的中数据元素之间的逻辑关系是用存储位置表示的,顺序表是随机存取结构。在顺序表上实现插入和删除操作,在等概率情况下,平均要移动表中元素的一半,算法的平均时间复杂度为O(n)。

顺序表的优点是:无需为表示表中元素之间的逻辑关系而增加额外的存储空间;随机存取。

顺序表的缺点是:插入和删除操作需要移动大量元素;表的容量难以确定;造成存储空间的“碎片”。

2.单链表:线性表的链接存储结构称为链表,是用一组任意的存储单元存放线性表的元素。链表表的中数据元素之间的逻辑关系是用指针表示的,单链表是顺序存取结构。在单链表中,头指针指向第一个元素所在的结点,具有标识一个单链表的作用,最后一个元素所在结点的指针域为空,称为尾标志;为了运算方便,在单链表的开始结点之前设置一个类型相同的结点,称为头结点。在单链表中实现插入和删除操作,无需移动结点,在将工作指针指向合适的位置后,仅需修改结点之间的链接关系,算法的平均时间复杂度为O(1)。

单链表的优点:长度不固定,可随意增删改;存储空间不连续。

单链表的缺点:不支持随机查找。

3.循环链表:是在单链表中,将尾结点的指针域由空指针改为指向头结点,通常用尾指针来标识。循环链表基本操作与单链表相似,仅在与循环条件不同,从循环链表的任一结点出发,可扫描到其他结点,从而增加链表的灵活性。

4.双链表:双链表是在单链表的每个结点再设置一个指向前驱结点的指针域,是一种对称结构,便于实现各种操作。其结点结构为data,prior,next三个域;其中data为数据域,存放数据元素;prior为前驱指针域,存放改结点的前驱结点的地址;next为后继指针域,存放该结点的后继结点的地址。

5.静态链表:是用数组来描述单链表,用数组元素的下标来模拟单链表的指针,是静态存储分配。静态链表的数据元素由两个域组成:data为数据域存放数据元素,next域存放该元素后继元素的数组下标。静态链表在实现插入和删除操作时,只需修改游标,不需移动表中的元素。

6.间接寻址:是将数组和指针结合起来,将数组中存储数据元素的单元改为存储指向该元素的指针。间接寻址保持了顺序表随机存取的优点,同时改进了删除和插入操作的时间性能。

猜你喜欢

转载自blog.csdn.net/CHENCHWT/article/details/80148916