图的定义
图[Graph]是有顶点的有穷非空集合和顶点之间边的集合组成。通常表示为:G[V,E].其中,G表示一个图,V是图G中的顶点集合,E是图G中边的集合。边没有方向的图叫做无向图,有方向的叫做有向图;任意两个顶点之间都有无向边连接叫做无向完全图;带有权值的图叫做网;
图的存储
顺序存储:利用一维数组存储图的顶点集合;利用二维数组存储顶点之间的关系;
邻接矩阵:设图G有n个顶点,则邻接矩阵是一个n*n的方阵定义为:
顺序存储数据结构:(邻接矩阵)
#define MAXVEX 100
链式存储数据结构:(邻接表)
//邻接表的节点
图的遍历
- 深度优先遍历(DFS)(类似树的前序遍历)
第一次遍历根据右手原则遍历,遍历过的节点做标记,遍历到没有节点可以遍历,返回遍历,直到到达第一个遍历的节点。
邻接矩阵深度优先遍历代码(DFS)
//手动创建上面结构图
邻接表深度优先遍历代码(DFS)
//手动创建邻接表
- 广度优先遍历(类似树的层序遍历)
- 把根节点放到队列的末尾。
- 每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾,并把这个元素记为它下一级元素的前驱。
- 找到所要找的元素时结束程序。
- 如果遍历整个树还没有找到,结束程序。
邻接矩阵广度优先遍历代码(BFS)
void
邻接表广度优先遍历代码(BFS)
void