顺序表与链表的异同

一、空间

    1) 创建

           ① 顺序表:静态创建一块连续的空间。

           ② 链表:动态的创建不连续的空间。

    2)使用

           ① 顺序表:

                            优点:

                                       按逻辑顺序连续存储,提高空间利用率;

                                       大多数高级语言都有数组,容易实现;

                                      不需要存储关系,无需额外空间开销。

                           缺点:

                                    空间长度固定,需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;

                                   预先分配过小,又会造成溢出。

           ② 链表:

                         优点:基本没有空间上的限制,允许线性表的长度有很大的变化,,基本只与内存空间大小有关。

                         缺点: 需要存储关系,浪费一些空间。

二、时间

    1) 查找

           ① 顺序表:按元素序号查找,时间复杂度小。

           ② 链表:需要循环链表访问,即从一个节点一个一个节点去查找元素访问,时间复杂度大。

2)添加、删除

          ① 顺序表:需要进行较多数据元素的移动,并且改变物理位置,时间复杂度大。

          ② 链表:物理位置不变,只进行少量的指针指向的变动,时间复杂度小。

三、选择

   1)从存储空间上:

       如果需要分配明确的空间大小,尽量选择顺序表;

       如果对线性表的长度与规模难以估计,最好选择链表。

   2)从操作上:

       对于经常做查找访问元素的操作,用顺序表较好;

       对于经常做添加、删除元素的操作,用链表较好。

3)基于环境的考虑:

顺序表容易实现,任何高级语言中都有数组类型;链表的操作是基于指针的,相对来讲前者简单些。

你可能感兴趣的:(计算机与网络,数据结构,顺序表与链表)