数据结构(二)链表2:链式存储结构和顺序存储结构的优缺点

1.储存分配方式:
顺序存储结构:一组连续的储存空间 依次 存放线性表中的数据元素;
链式存储结构:一组任意的储存空间 存放线性表中的数据元素
2.时间性能:(时间复杂度)
顺序存储结构:查找操作O(1),  插入和删除操作需要移动平均超过一半的数据元素O(n)
链式存储结构:查找操作O(n),  插入和删除时不需要移动大量的数据元素(只是节点指针在移动)O(1)
3.空间性能
顺序存储结构:预先分配储存空间,造成储存空间浪费或者分配储存空间过小问题
链式存储结构:临时开辟储存空间,只要内存够,就能分配。

顺序表优点:

        时间上讲:可以顺序存储,也可以直接存储,访问速度快,

        空间上讲:储存利用率高,不需要用指针。

顺序表缺点:

        时间上讲:插入或者删除时,如果想把保持原先的顺序,必须要平均移动一般的数据元素,因此更新速度慢。

        空间上讲:如果采用静态分配的储存结构,一旦储存数组的空间已满,不能扩充,插入的新元素将溢出;

链表优点:

        时间上讲:插入和删除操作不需要移动大量的元素,只需要移动指针,更新速度快;

        空间上讲:链表基本没有溢出和满的情况,只要内存可以分配节点,就可以扩充;

链表缺点:

        时间上讲:链表只能顺序访问,查找一个元素平均需要搜索半个链表,访问速度慢;

        空间上讲:每个元素需要一个附加指针,储存效率较低;链表单线联系的特性,操作不慎,会出现断链,将会丢失后面所有的元素;


总结:



1.当事先不能确定线性表的大小时,可采取链式结构,便于扩充


2.当需要频繁查找或存取线性表中元素而增删操作较少时,可采取顺序存储结构,有利于查找和存取速度。


3.需要频繁增删表中元素时,应采用链式存储结构。


[img=http://i.WoTuLa.com/wp.png]

你可能感兴趣的:(数据结构,c++)