Skip to content

数据结构

常见的数据结构可以按照逻辑结构、物理结构、功能用途来进行分类。

按物理结构分

  • 连续结构/数组/Array,在物理内存上,其数据的存储是物理连续的。
  • 非连续结构/链表/Link+Node,在物理内存上,其数据的存储是物理不连续的。

按逻辑结构分

线性结构

  • 列表
  • 队列

分支结构(半平面结构)

  • 哈希表
  • 红黑树
  • 跳表
  • B树

网状结构(平面结构)

复杂的网状结构,其构成有两个要素,一个是节点,一个是边,图可以用来抽象物体之间的关系。

图的性质

图具有很多性质和概念,不同的概念强调了图的某个方面的有用特性,是将图用于生产和解决实际问题的重要前提。

  • 密度。根据图中节点之间的关系连接数量,可以将图分为稀疏图和稠密图。
  • 方向性。根据图中的节点之间的关系的方向性,可以将图分为有向图和无向图
  • 权重。为不同节点之间的关系添加一个代表重要性的具体数值,将图分为了加权图和无权图。
  • 环。在图中,节点之间的关系连线形成了环路,用以描述图是否是有环图或者无环图。

图的遍历

  • dfs。深度优先。在遍历图上的节点的时候,总是先处理完当前的节点上的数据,然后再进入下一跳节点,处理下一跳数据。
  • bfs。广度优先。在遍历图上的节点的时候,总是进入下一个节点,直到所有的下一跳节点都遍历完成之后,再处理本节点上的数据。

图的应用

  • 可达性:路径存在问题
  • 拓扑排序:调度问题
  • 强连通分量->Kosaraju算法
  • 最小生成树->Prim算法/Kruskal算法
  • 最短路径问题->dijkstra算法/Bellmon-Ford算法/Floyd算法