图
图结构可以分为有向图和无向图,常见地表示方法有数组表示法、邻接表、十字链表和邻接多重表,遍历地方式有两种,一种是深度优先遍历,另一种是广度优先比遍历。
1.1 什么是图
- 每个数据元素称为顶点,在有向图中,从V1到V3称为一条弧,V3到V1是另一条弧,V1称为弧尾,V3称为弧头。在无向图中,从V 1到V3称为一条边。
- 有n个顶点,
1/2n(n-1)
条边地无向图称为完全图,有n(n-1)
条弧地有向图称为有向完全图,有很少条边或图称为稀疏图,反之称为稠密图。 - 在G2无向图中,类似V3与V1、V2和V4之间有边的互称为邻接点,与顶点相关联的边数称为顶点的度。
- 在G1有向图中,顶点的度是顶点的出度和入度之和,以顶点为头的弧的数目称为入度,为尾的弧的数目称为出度。
- 从一个顶点到另一个顶点的顶点序列称为路径,在有向图中,路径是有方向的,路径上边或弧的数目称为路径的长度,如果一条路径中的起始顶点和结束顶点相同,那么称这个路径为环或者回路,不出现重复顶点的路径称为简单路径。
- 无向图中,如果一个顶点到另一个顶点有路径,那么它们就是连通的,如果图中的任意两个顶点都是连通的,那么这个图就是连通图。无向图中的极大连通子图称为连通分量。
- 如果是有向图中的任意一对顶点都有路径,那么这个就是强连通图,相应的它的极大连通子图就称为强连通图分量。
- 一个连通图的一个极小连通子图,它包含所有顶点,但足以构成一棵树的
n-1
条边,加一条边必定会形成环,这个就称为生成树。
1.2 图的表示
表示图的方法通常有四种:
1、数组表示法;
2、邻接表;
3、十字链表;
4、邻接多重表。
邻接表是图的一种链式存储结构,十字链表是有向图的另一种链式存储结构,邻接多重表是无向图的另一种链式存储结构。
1.3 邻接表的表示与实现
邻接表有两种节点,一种是头节点,另一种是表节点。头结点中存储一个顶点的数据和指向链表中第一个结点,表结点中存储当前顶点在图中的位置和指向下一条边或弧的结点,表头结点用链式或顺序结构方法存储。
来源:https://blog.csdn.net/Thera_qing/article/details/100812017