比较总结线性表的几种主要存储结果

来源:互联网 发布:淘宝千牛怎么开直通车 编辑:程序博客网 时间:2024/06/07 04:35

顺序表:

顺序表是用一段地址连续的存储单元依次存储线性表的数据元素,通常用一维数组来实现。顺序表是线性表的顺序存储结构,是随机存取结构。

优点:无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速地存取表中任一位置的元素,即随机存取。

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

 

单链表:

单链表是用一组任意的存储单元存放线性表的元素,元素的逻辑次序和物理次序不一定相同,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。单链表中数据元素之间的逻辑关系用指针表示,单链表是顺序存取结构。

优点:不必事先知道线性表的长度;插入和删除元素时只需修改指针,不用移动元素。

缺点:指针的结构性开销;存取表中任意元素不方便,只能进行顺序存储。

 

循环链表

循环链表是是在单链表中,将终端结点的指针域由空指针改为指向头结点,就使整个单链表形成一个环,通常采用尾指针来标识。

优点:没有增加任何存储量,可以从链表中的任一结点出发,增加了链表操作的灵活性。

缺点:循环链表没有明显的尾端,可能会使循环链表的处理操作进入死循环。

 

双链表

双链表是在单链表的每个结点中再设置一个指向其前驱结点的指针域。双链表是一种对称结构,便于实现各种操作。

优点:可以从链表中的任一结点出发快速确定其前驱结点。

缺点:每个结点需要存储前驱指针域,增加了指针的结构性开销。

 

静态链表

静态链表是用数组来描述单链表,用数组元素的下标来模拟单链表的指针(称为游标)。data域存放数据元素,next域存放该元素的后继元素所在的数组下标。

优点:插入和删除时,只需修改游标,不需要移动表中的元素。

缺点:没有解决连续存储分配带来的表长难以确定的问题。

 

间接寻址:

间接寻址是将数组中存储数据元素的单元改为存储指向该元素的指针。

优点:保持了顺序表随机存取的优点;改进了插入和删除操作的时间性能。

缺点:没有解决连续存储分配带来的表长难以确定的问题。

阅读全文
0 0
原创粉丝点击