《数据结构》实验报告 实验内容: (一)判断一个图有无回路 (二)求一个无向图G 的连通分量的个数 一、 目的和要求(需求分析): 1、 了解图的定义和图的存储结构
2、 熟悉掌握图的邻接矩阵和邻接表
3、 理解图的遍历算法---深度优先搜索和广度优先搜索
4、 学会编程处理图的连通性问题
二、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 判断一个图有无回路: 在程序设计中,先必须确定所要创建的图是有向还是无向,是图还是网,其次再根据各自的特点,用连接表来实现创建
在有向图中,先找出入度为 0 的顶点,删除与这个顶点相关联的边(出边),将与这些边相关的其它顶点的入度减 1,循环直到没有入度为 0 的顶点
如果此时还有未被删除的顶点,则必然存在环路,否则不存在回路
无向图则可以转化为: 如果存在回路,则必然存在一个子图,是一个回路
因此回路中所有定点的度>=2
第一步:删除所有度