数据结构-顺序表和链表之间优缺点

1、顺序表存储

原理:将表中元素一个个存入一组连续的存储单元中,这种存储结构是顺序结构。采用顺序存储结构的线性表简称为“ 顺序表”。

优点:简单易用 使用的是联系的内存空间  可以借助CPU的缓存机制  预读取数组中的数据  所以访问效率比较高

缺点:1.插入和删除比较慢

           2.不可以增长长度    

           3:如果申请的过大  系统可能没有足够的内存空间给分配,会导致内存不足,如果声明过小 就会导致不够用  如果不够用 只能申请一个更大的空间 还要把原数组的数据copy 过去  影响效率

比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序  C# 中 如 ArrayList List 等

2、链式表存储

原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题

优点:插入和删除速度快,保留原有的物理顺序

缺点:查找速度慢,因为查找时,需要循环链表访问  并且链式存储在内存中不连续  这样对CPU的缓存不友好  没办法做到预先读取  链表除了要存储本身数据外 还要额外维护 前 后节点的指针,对内存要求的严格的程序 是不友好的~而且链表频繁的删除和新增 会导致内存也频繁的申请 释放   容易产生内存碎片    导致GC 频繁的去回收  

比如:插入或者删除一个元素时,只需要改变指针指向即可  C# 中 LinkedList<T>

总结  在实际开发中  我们还是要权衡 自己的使用场景 来决定 使用什么样的数据结构

posted @ 2019-10-25 17:04  burg-xun  阅读(1910)  评论(0编辑  收藏  举报