张芷铭的个人博客

数据结构是计算机存储、组织数据的方式,选择合适的数据结构是高效算法的基础。

线性结构

结构特点复杂度
数组连续内存,随机访问访问 O(1),插入删除 O(n)
链表非连续内存,动态扩展插入删除 O(1),访问 O(n)
LIFO 后进先出[[栈]]
队列FIFO 先进先出任务调度、BFS
字符串匹配[[算法/KMP算法:字符串匹配]]

树形结构

  • 二叉树:前序、中序、后序、层序遍历
  • 哈夫曼树:最优二叉树,数据压缩
  • 树状数组:区间查询 O(log n)
  • 线段树:动态区间统计
  • 平衡树:AVL、红黑树
  • B 树/B+ 树:数据库索引
  • 字典树 (Trie):字符串搜索

图结构

  • [[最小代价生成树]] - MST(Prim、Kruskal)
  • 最短路径(Dijkstra、Floyd)
  • 拓扑排序、强连通分量

高级结构

结构用途
并查集动态连通性
优先队列、Top K
跳表平衡树替代
布隆过滤器快速查找

应用场景选择

场景推荐结构
频繁访问数组
频繁插入删除链表
快速查找哈希表
有序维护平衡树
优先级处理
区间操作线段树
关系网络

学习路径

  1. 入门:数组 → 链表 → 栈 → 队列 → 二叉树
  2. 进阶:平衡树 → 堆 → 图 → 并查集
  3. 面试:[[笔试真题以及题解]]

资源

Comments