1、顺序表存储
原理:将表中元素一个个存入一组连续的存储单元中,这种存储结构是顺序结构。采用顺序存储结构的线性表简称为“ 顺序表”。
优点:简单易用 使用的是联系的内存空间 可以借助CPU的缓存机制 预读取数组中的数据 所以访问效率比较高
缺点:1.插入和删除比较慢
2.不可以增长长度
3:如果申请的过大 系统可能没有足够的内存空间给分配,会导致内存不足,如果声明过小 就会导致不够用 如果不够用 只能申请一个更大的空间 还要把原数组的数据copy 过去 影响效率
比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序 C# 中 如 ArrayList List 等
2、链式表存储
原理:链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题
优点:插入和删除速度快,保留原有的物理顺序
缺点:查找速度慢,因为查找时,需要循环链表访问 并且链式存储在内存中不连续 这样对CPU的缓存不友好 没办法做到预先读取 链表除了要存储本身数据外 还要额外维护 前 后节点的指针,对内存要求的严格的程序 是不友好的~而且链表频繁的删除和新增 会导致内存也频繁的申请 释放 容易产生内存碎片 导致GC 频繁的去回收
比如:插入或者删除一个元素时,只需要改变指针指向即可 C# 中 LinkedList<T>
总结 在实际开发中 我们还是要权衡 自己的使用场景 来决定 使用什么样的数据结构