编写一个程序 algo8-1,实现不带权图与带权图得邻接矩阵与邻接表得相互转换算法、输出邻接矩阵与邻接表得运算,并在此基础上设计一个主程序完成如下功能:(1)建立如图所示得有向图 G 得邻接矩阵,并输出之;(2)由有向图 G 得邻接矩阵产生邻接表,并输出之;(3)再由(2)得邻接表产生对应得邻接矩阵,并输出之。文件 graph、h 定义了图得邻接矩阵表示类型与邻接表表示类型,该头文件在代码如下:typedef int InfoType;#define MAXV 100 //最大顶点个数#define INF 32767 //INF 表示∞//以下定义邻接矩阵类型typedef struct{int no; //顶点编号InfoType info; //顶点其它信息} VertexType; //顶点类型typedef struct //图得定义{int edges[MAXV][MAXV]; //邻接矩阵int n,e; //顶点数,边数VertexType vexs[MAXV]; //存放顶点信息} MGraph; //图得邻接矩阵类型//以下定义邻接表类型typedef struct ANode //边得节点结构类型{int adjvex; //该边得终点位置struct ANode * nextarc; //指向下一条边得指针InfoType info; //该边得相关信息,这里用于存放权值} ArcNode;typedef int Vertex;typedef struct Vnode //邻接表头节点得类型{Vertex data; //顶点信息ArcNode * firstarc; //指向第一条边} VNode;typedef VNode AdjList[MAXV]; //AdjList 就是邻接表类型typedef struct{AdjList adjlist; //邻接表int n,e; //图中顶点数 n 与边数 e} ALGraph; //图得邻接表类型Algo8-1、cpp 得代码如下:#include#include#include"graph、h"//----------------------------------------------------------------------//------------------------不带权图得算法-------------------------//----------------------------------------------------------------------void MatToList(MGraph g,ALGraph * &G) //将邻接矩阵 g 转换成邻接表 G{int i,j;ArcNode * p;G=(ALGraph * )malloc(sizeof(ALGraph));for(i=0;iadjlist[i]、firstarc=NULL;for(i=0;i=0;j--)if(g、edges[i][j]!=0) //邻接矩阵得当前元素不为 0{p=(ArcNode * )malloc(sizeof(ArcNode)); //创建一个节点 * pp->adjvex=j;p->nextarc=G->adjlist[i]、firstarc; //将* p 链到链表后G-...