一、空间的问题
顺序表的存储空间是静态分配的,也就是顺序表的存储地址是连续的。在程序执行前,须明确规定它的存储规模。
静态链表中初始存储池虽然也是静态分配的,但若同时存在若干个节点类型相同的链表,则他们可以共享空间,使个链表之间能够相互调节余缺,减少溢出机会。
动态链表的存储空间是动态分配的,只要内存空间上有空闲,就不会产生溢出。
即如果长度变化大,且大小难以估计,采用动态链表作为存储结构较好。
同样还存在一个问题,存储密度(结点数据本身所占的存储量/结点结构所占的存储容量)。
顺序表中有备用节点,而链表中有指针域,一个指针域占用的大小为一个int型数据的大小,所以,如果数据的大小可以确定范围,最好使用顺序表。
二、时间的问题
顺序表是由向量实现的,它是一种随机存取的结构,对表中任一结点都可以在O(1)时间内直接存储。
链表中的结点需要从头指针起顺着链才能找到。
因此链表适用于增删改操作情况多的线性表
三、语言问题
对没有指针这么一说的语言环境,可以设定静态链表实现。
阅读(2142) | 评论(0) | 转发(0) |