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

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


一、

顺序表:1.定义:线性表的顺序存储结构称为顺序表。

        2.优点:顺序表使用一段地址连续的存储单元依次存储线性表的数据元素。这使得其逻辑结构和物理结构一致。很好理解。同时在查找某个具体位置的元素,或某个元素的位置时,时间复杂度为T(n)=O(1);

        3.不足:(1)插入和删除操作需要移动大量的元素。

                2)表的容量难以确定

                3)造成存储空间的“碎片”数组要求占用连续的存储空间,及即使存储单元数超过所需的数目,如果不连续也不能使用,造成存储空间的“碎片”现象。

 

二、

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

        2.优点:插入和删除操作操作不需要移动元素,只需要修改一下指针。灵活的申请节点,不需要事先定好表长。

        3.不足:对某指针的操作必须要找到他前面的元素。也就说我们每次操作都要在头指针开始,这样使得算法的时间耗费在正确寻找位置上。

 

三、

循环链表1.定义:在单链表中将终端结点的指针域由空指针改为指向头结点。这种头尾相连的单链表成为循环链表。

          2.优点:从循环链表的任一结点出发,可扫描到其他结点,从而增强了单链表操作的灵活性。

          3.不足:单向的寻找,如果要找到它的前驱还得整个在循环一遍。

 

四、

双链表1.定义:在单链表的每个结点中设置一个指向其前驱结点的指针域。

        2.优点:可以快速确定表中任一结点的指针域。更加灵活的操作链表。

        3.不足:相比单链表,多了前驱指针域,加大了在结构上内存消耗

     

 

五、

静态链表:1.定义:是用数组来表示单链表,用数组元素的下标来模拟单链表的指针。

          2.优点:删除和插入时不需要移动大量的元素。

          3.不足:并没有解决连续存储分配带来表长难以确定的问题。

 

 

六、

间接寻址1.定义:将数组和指针结合起来,数组中的存储数据元素的单元改为了存储指向该元素的指针。

          2.优点:插入删除操作移动的不是元素而是指向该元素的指针。当每个元素占用空间较大的时候,该方法的优点就明显出来了。(插入删除都快)

          3.不足:仍然没有解决连续存储分配带来表长难以确定的问题。



       总而言之,具体问题具体分析。看频繁操作的是插入删除操作还是查找操作。结合以上各存储结构的特点进行合理化的选择。

 

 

       

  

       

 

你可能感兴趣的:(比较总结线性表的几种主要存储结果)