initial commit
This commit is contained in:
74
pages/数组与链表.md
Normal file
74
pages/数组与链表.md
Normal file
@@ -0,0 +1,74 @@
|
||||
## [[数组]]
|
||||
- 一种线性数据结构,相同类型的元素存储于**连续**的内存空间中
|
||||
- 元素在数组中的位置称为该元素的**索引**
|
||||
- 常用操作
|
||||
- 初始化数组
|
||||
- 访问元素
|
||||
- > 索引本质上是内存地址的偏移量
|
||||
- 插入元素
|
||||
- 删除元素
|
||||
- 遍历数组
|
||||
- 查找元素
|
||||
- 扩容数组
|
||||
- 优点
|
||||
- 空间效率高
|
||||
- 支持随机访问
|
||||
- 缓存局部性
|
||||
- 局限性
|
||||
- 插入与删除效率低
|
||||
- 长度不可变
|
||||
- 空间浪费
|
||||
- 典型应用
|
||||
- 随机访问
|
||||
- 排序与搜索
|
||||
- 查找表
|
||||
- 机器学习
|
||||
- 数据结构实现
|
||||
- ## [[链表]]
|
||||
- 一种线性结构,每一个元素都是一个节点对象,各个节点之间通过**引用**连接
|
||||
- 各个节点可以分散在内存各处,内存地址无需连续
|
||||
- 链表的首个节点被称为**头节点**,最后一个元素称为**尾节点**
|
||||
- 尾部指向的是空
|
||||
- > 相同数据量下,链表比数组占用更多内存空间
|
||||
- 常用操作
|
||||
- 初始化链表
|
||||
- 插入节点
|
||||
- 删除节点
|
||||
- 访问节点
|
||||
- 查找节点
|
||||
- 常见链表类型
|
||||
- 单向链表
|
||||
- 环形链表
|
||||
- 双向链表
|
||||
- 典型应用
|
||||
- 栈与队列
|
||||
- 哈希表
|
||||
- 图
|
||||
- 高级数据结构
|
||||
- 浏览器历史
|
||||
- LRU算法
|
||||
- 时间片轮转算法
|
||||
- 数据缓冲区
|
||||
- ## 列表
|
||||
- 可以动态扩容的数组
|
||||
- 常用操作
|
||||
- 初始化列表
|
||||
- 访问元素
|
||||
- 插入与删除元素
|
||||
- 遍历列表
|
||||
- 拼接列表
|
||||
- 排序列表
|
||||
- 列表实现
|
||||
- 初始容量
|
||||
- 数量记录
|
||||
- 扩容机制
|
||||
- ## 内存与缓存
|
||||
- > 物理结构在很大程度上决定了程序对内存和缓存的使用效率
|
||||
- 金字塔结构
|
||||
- 
|
||||
- 硬盘难以被内存取代
|
||||
- 缓存的大容量和高速度难以兼得
|
||||
- 硬盘用于长期存储大量数据,内存用于临时存储程序中正在处理的数据,缓存用来存储经常访问的数据
|
||||
- 数据结构的内存效率
|
||||
- 内存是有限的且同一块内存不能被多个程序共享
|
||||
- 随着反复申请与释放内存,空闲内存的碎片化程度会越来越高
|
||||
Reference in New Issue
Block a user