数组:
结构在通过索引进行查询数据是效率比较高,而对于数组插入和删除操作则效率比较低,在第一个位置进行插入数据时,其它数据就需要依次后移,而删除一个数据,则该数据后的数据全部前移。
链表:
为了保证数据插入和删除不会影响其它数据的移动,保证线性开销,所以引出了链表。每个值都不会连续进行存储。链表是由一系列节点组成,每一个节点都有一个链点,就是next链。而next链则会执行下一个node引用,所以我们在插入和删除数据的时候,需要该链表next链的指向地址即可,每个节点不需要内存进行连续存储,这样会减少删除和插入的线性开销。
从逻辑结构上看:
1:数组必须事先定义固定的长度,不能实行动态数据的增减。当数据增加时,可能超出原先定义的元素个数,出现溢出现象。当数据减少时,造成内存浪费。数组中增减数据时需要移动其他数据。
2:链表动态的进行了存储分配,可以适应数据动态的增减,且方便的插入和删除数据。
从内存来看:
1(静态)数组从栈中分配空间,对于程序员来说方便快速,但自由度小。
2链表从堆中分配空间,自由度大,但申请管理比较麻烦
。。。该博文为摘抄 关于动态数组 及 单双向链表 没写 有机会补上