比较总结线性表的几种主要存储结果
一、
顺序表: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.不足:仍然没有解决连续存储分配带来表长难以确定的问题。
总而言之,具体问题具体分析。看频繁操作的是插入删除操作还是查找操作。结合以上各存储结构的特点进行合理化的选择。