数组与链表的优缺点

数组,在内存上给出了连续的空间.数组

链表,内存地址上能够是不连续的,每一个链表的节点包括原来的内存和下一个节点的信息(单向的一个,双向链表的话,会有两个). spa



数组优于链表的: 


1.内存空间占用的少,由于链表节点会附加上一块或两块下一个节点的信息.可是数组在创建时就固定了.因此也有可能会由于创建的数组过大或不足引发内存上的问题. 
2.数组内的数据可随机访问.但链表不具有随机访问性.这个很容易理解.数组在内存里是连续的空间.好比若是一个数组地址从100到200,且每一个元素占用两个字节,那么100-200之间的任何一个偶数都是数组元素的地址.能够直接访问.链表在内存地址多是分散的.因此必须经过上一节点中的信息找能找到下一个节点. 
3.查找速度上.这个也是由于内存地址的连续性的问题.不罗索了. 指针

 


链表优于数组的: 


1.插入与删除的操做.若是数组的中间插入一个元素,那么这个元素后的全部元素的内存地址都要日后移动.删除的话同理.只有对数据的最后一个元素进行插入删除操做时,才比较快.链表只须要更改有必要更改的节点内的节点信息就够了.并不须要更改节点的内存地址. 
2.内存地址的利用率方面.无论你内存里还有多少空间,若是没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的缘由之一在这里.而链表能够是分散的空间地址. 
3.链表的扩展性比数组好.由于一个数组创建后所占用的空间大小就是固定的.若是满了就无法扩展.只能新建一个更大空间的数组.而链表不是固定的,能够很方便的扩展.排序

 

   数组与链表的优缺点;    


    数组:内存

    优势:使用方便 ,查询效率 比链表高,内存为一连续的区域 ci

    缺点:大小固定,不适合动态存储,不方便动态添加
    链表:table

     优势:可动态添加删除   大小可变   
     缺点:只能经过顺次指针访问,查询效率低效率

 

 补充:

 

顺序表的优势:查找方便,适合随机查找 
顺序表的缺点:插入、删除操做不方便,由于插入、删除操做会致使大量元素的移动 

连接表的优势:插入、删除操做方便,不会致使元素的移动,由于元素增减,只须要调整指针。 
顺序表的缺点:查找方便,不适合随机查找变量

 

链表的特性是在中间任意位置添加删除元素的都很是的快,不须要移动其它的元素。  
链表顾名思义,要把各个元素连接起来才算撒。    
一般链表每个元素都要保存一个指向下一个元素的指针(单链表)。    
双链表的化每一个元素即要保存到下一个元素的指针,还要保存一个上一个元素的指针。    
循环链表则把最后一个元素中保存下一个元素指针指向第一个元素。    
数组是一组具备相同类型和名称的变量的集(百度)合。这些变量称为数组的元素,每一个数组元素都有一个编号,这个编号叫作下标,咱们能够经过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。
数组在进行查找,排序操做是很方便;链表不须要连续空间,并且做插入操做方便!    
分配空间上也不一样,创建过程也不一样!
链表和数组的本质差别             1     在访问方式上             数组能够随机访问其中的元素             链表则必须是顺序访问,不能随机访问             2     空间的使用上             链表能够随意扩大             数组则不能    
相关文章
相关标签/搜索