实验报告(/ 学年第一学期)课程名称实验名称离散数学图的随机生成及欧拉(回)路的确定实验时间指导单位指导教师年月日学生姓名学院(系)班级学号专业实验报告实验名称图的随机生成及欧拉(回)路的确指导教师定实验类型上机实验实验学时一、 实验目的和要求4实验时间目的:编程随机生成 n 个结点的无向图或者有向图并能判定该无向图或者有向图是否存在欧拉(回)路,若是则给出欧拉(回)路。要求:对给定 n 个结点,随机生成邻接矩阵以确定某无向或者有向简单图并进行是否存在欧拉(回)路的判定,若符合则给出至少一条欧拉回路或欧拉路。二、实验环境(实验设备)硬件:PC 机。软件:Code::Blocks(C++ )三、实验原理及内容内容:1 图的随机生成:○首先由用户选择是生成无向图还是有向图,再读入用户输入的结点个数,然后调用对应的无向图类或者有向图类的构造函数,在构造函数中随机生成邻接矩阵,计算可达性矩阵并且输出这两种矩阵。2 欧拉(回)路的确定:调用对应的无向图类或者有向图类中的判定是否存在○欧拉路的函数和判定是否存在欧拉回路的函数,如果存在,输出欧拉(回)路2存在,并且调用遍历欧拉路或者欧拉回路的函数。原理:建立一个图类(父类),在图类中用 n 储存结点个数,用**a 指向一个二维数组存储邻接矩阵,用**p 指向的二维数组储存可达性矩阵,建立图类的构造函数、析构函数、输出邻接矩阵的函数、输出可达性矩阵的函数、判断是否连通的函数。由于两种图中的判断是否存在欧拉(回)路的原理不同,所以建立图类的两个派生类——无向图类和有向图类,在类中分别建立各自的判断是否存在欧拉(回)路的函数,以及遍历欧拉(回)路的函数。这些函数的原理就是欧拉(回)路判定的充要条件,结合邻接矩阵和可达性矩阵的特点编写即可。程序:#include #include #include #include using namespace std;class graph//图类{protected:int n;//结点数int **a;//储存邻接矩阵int **p;//储存可达性矩阵public:3graph(int size);~graph();void Print_linjie();//输出邻接矩阵void Print_keda();//输出可达性矩阵bool Liantong_or_not();//判断图是否连通};graph::graph(int size){n=size;srand(time(NULL));a=new int*[n];for(int i=0;i