这篇文章主要介绍顺序存储与链式存储的差异,主要是从两个大的维度和几个小的方面进行比较。
一,从空间性能角度
(1)由下表可以看出顺序存储的存储密度是1(100%)。什么意思呢?就是开辟一段连续的空间,用来存顺序表,这一段空间所有的位置都用来存储我们需要的数据信息,没有空间的浪费。所以利用率达到了100%【也就是存储密度是1】。然而链式结构中的节点不仅存储了数据,还保存了指针,然而指针并没有存储我们用到的数据,所以说,链式存储的存储密度是小于1的。
(2)由下表可以看出顺序存储的容量分配要弱一些。顺序存储需要多少空间要是事先确定,链式存储是动态分配的,更加灵活吗,可以动态的更改分配。
二,从时间性能方面
(1)在时间性能反方面,查找运算用顺序表更方便,链式表相对来讲就差一些。当然,在内容没有顺序的前提下,他们的时间复杂度是一样的。都是从第一个开始匹配。如果存储的顺序表本身是有序的,涉及到二分查找法时,顺序存储要更优。
(2)读取信息(指定某个内容读取出来)顺序表更优。比如说要读取a[5],在顺序表中,直接读取a[5]即可,但是在链式存储中,假设指针在头结点,,头结点指向1号节点, 要next()4次才能定位到a[5]。
(3)插入运算,链式结构更优。链式结构在插入数据的时候,只需要将要插入的节点的指针指向要插入节点上一个节点的next节点,在将上一个节点的next节点指向要插入的节点即可。但是在链式结构中,需要将要插入位置之后的所有元素向后移,再插入新的节点、
(4)删除运算,链式结构更优。链式结构在删除节点是,只需要将要删除节点的上一个节点的指针指向他的下一个节点即可。然而在链式结构中,需要将要删除节点之后的所有节点前移一个位置。