线性表存储方法

来源:互联网 发布:网络交友弊大于利论点 编辑:程序博客网 时间:2024/06/05 23:53
一.静态链表
1.1 实质:用数组来表示单链表,用数组元素的下标来模拟单链表的指针。其中数组元素结点由数据域(data)和指针域(next)构成。
1.2 first:静态链表的头指针,为方便插入和删除操作,通常静态链表带头指针。
1.3 avail:空闲链表头指针,空闲链表由于只在表头操作,所以不带头结点。

1.4 相对顺序表来说,静态链表的优点:在执行操作和删除操作的时候,不需要移动表中的元素,只需要修改游标。
1.5 静态链表的缺点:没有解决连续存储分配带来表长难以确定的问题,而且,静态链表还要维护一个空闲链且不能随机存取。


二.间接寻址
2.1 实质:是将数组和指针结合起来的一种方法,它将数组中存储数据元素的单元改为存储指向该元素的指针。
2.2 间接寻址的插入操作移动的不是元素而是指向元素的指针,当元素占用空间较多时,比顺序表的插入性能好。
2.3 优点:保持了顺序表随机存取的优点,同时改进了插入和删除操作的时间性能。
2.4 缺点:没有解决连续存储分配带来的表长难以确定的问题。

三.顺序存储
3.1 特点:顺序表逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配
3.2优点:方法简单,容易实现;不用为表示节点间的逻辑关系而增加额外的存储开销;可以随机存取。
3.3缺点:插入和删除操作平均需要移动表中一半元素,因此对n较大的顺序表效率低;需要预先分配足够大的存储空间,估计过大可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。
3.4使用情况:当线性表的长度变化不大而且实现容易确定其大小时,为节省存储空间,则采用顺序表作为存储结构比较适宜。

四.链式存储
4.1 特点:在链表中逻辑上相邻的数据元素,物理存储位置不一定相邻,它使用指针实现元之间的逻辑关系。并且,链表的存储空间是动态分配。
4.2 优点:插入、删除运算方便
4.3 缺点:要占用额外的存储空间储存元素之间的关系,存储密度降低(存储密度是指一个节点中数据元素所占的存储单元和整个节点所占的存储单元之比);链表不是一种随机存储结构,不能随机存取元素。
4.4 使用情况:当线性表的长度变化较大或者难以估计其存储规模时,宜采用动态链表作为存储结构