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