




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编写一个程序algo8-1,实现不带权图和带权图的邻接矩阵和邻接表的相互转换算法、输出邻接矩阵与邻接表的运算,并在此基础上设计一个主程序完成如下功能:(1) 建立如图所示的有向图G的邻接矩阵,并输出之;(2) 由有向图G的邻接矩阵产生邻接表,并输出之;(3) 再由(2)的邻接表产生对应的邻接矩阵,并输出之。文件graph.h定义了图的邻接矩阵表示类型和邻接表表示类型,该头文件在代码如下:typedef int InfoType;#define MAXV 100 /最大顶点个数#define INF 32767 /INF表示/以下定义邻接矩阵类型typedef structint no; /顶点编号InfoType info; /顶点其它信息 VertexType; /顶点类型typedef struct /图的定义int edgesMAXVMAXV; /邻接矩阵int n,e; /顶点数,边数VertexType vexsMAXV; /存放顶点信息 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 AdjListMAXV; /AdjList是邻接表类型typedef structAdjList adjlist; /邻接表int n,e; /图中顶点数n和边数e ALGraph; /图的邻接表类型Algo8-1.cpp的代码如下:#include#include#includegraph.h/-/-不带权图的算法-/-void MatToList(MGraph g,ALGraph * &G) /将邻接矩阵g转换成邻接表Gint i,j;ArcNode * p;G=(ALGraph * )malloc(sizeof(ALGraph);for(i=0;iadjlisti.firstarc=NULL;for(i=0;i=0;j-)if(g.edgesij!=0) /邻接矩阵的当前元素不为0p=(ArcNode * )malloc(sizeof(ArcNode); /创建一个节点 * pp-adjvex=j;p-nextarc=G-adjlisti.firstarc; /将* p链到链表后G-adjlisti.firstarc=p;G-n=g.n;G-e=g.e;void ListToMat(ALGraph * G,MGraph &g) /将邻接表G转换成邻接矩阵gint i,j;ArcNode * p; for(i=0;in;i+) / g.edgesij赋初值0for(j=0;jn;j+)g.edgesij=0;for(i=0;in;i+)p=G-adjlisti.firstarc;while(p!=NULL)g.edgesip-adjvex=1;p=p-nextarc;g.n=G-n;g.e=G-e;void DispMat(MGraph g) /输出邻接矩阵gint i,j;for(i=0;ig.n;i+)for(j=0;jg.n;j+)printf(%3d,g.edgesij);printf(n);void DispAdj(ALGraph * G) /输出邻接表Gint i;ArcNode * p;for(i=0;in;i+) p=G-adjlisti.firstarc;printf(%3d:,i);while(p!=NULL)printf(%3d,p-adjvex);p=p-nextarc;printf(n);/-/-带权图的算法-/-void MatToList1(MGraph g,ALGraph * &G) /将邻接矩阵g转换成邻接表Gint i,j;ArcNode * p;G=(ALGraph *)malloc(sizeof(ALGraph);for(i=0;iadjlisti.firstarc=NULL;for(i=0;i=0;j-)if(g.edgesij!=0&g.edgesij!=INF) /存在一条边p=(ArcNode * )malloc(sizeof(ArcNode); /创建一个节点 * pp-adjvex=j;p-info=g.edgesij;p-nextarc=G-adjlisti.firstarc; /将* p链到链表后G-adjlisti.firstarc=p;G-n=g.n;G-e=g.e;void ListToMat1(ALGraph * G,MGraph &g) /将邻接表G转换成邻接矩阵gint i,j;ArcNode * p;for(i=0;in;i+) / g.edgesij赋初值0for(j=0;jn;j+)if(i=j)g.edgesij=0;elseg.edgesij=INF;for(i=0;in;i+)p=G-adjlisti.firstarc;while(p!=NULL)g.edgesip-adjvex=p-info;p=p-nextarc;g.n=G-n;g.e=G-e;void DispMat1(MGraph g) /输出邻接矩阵gint i,j;for(i=0;i,g.n;i+)for(i=0;ig.n;i+)for(j=0;jg.n;j+)if(g.edgesij=INF)printf(:%3d,);elseprintf(%3d,g.edgesij);printf(n);void DispAdj1(ALGraph * G) /输出邻接表Gint i;ArcNode * p;for(i=0;in;i+)p=G-adjlisti.firstarc;printf(%3d:,i);while(p!=NULL)printf(%3d(%d),p-adjvex,p-info);p=p-nextarc;printf(n);主程序exp8-1.cpp代码如下:#include#include#includegraph.hextern void MatToList1(MGraph,ALGraph * &); /以下外部函数在algo8-1.cpp中extern void ListToMat1(ALGraph * ,MGraph &);extern void DispMat1(MGraph);extern void DispAdj1(ALGraph * );void mian()int i,j;MGraph g,g1;ALGraph * G;int AMAXV6=0,5,INF,7,INF,INF,INF,0,4,INF,INF,INF,8,INF,0,INF,INF,9,INF,INF,5,0,INF,6,INF,INF,INF,5,0,INF,3,INF,INF,INF,1,0;g.n=6;g.e=10; /建立图8-1中有带向标图G的邻接矩阵for(i=0;ig.n;i+)for(j=0;jg.n;j+)g.edgesij=Aij;printf(有向图G的邻接矩阵:n);DispMat1(g);G=(ALGraph
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年计算机硬件工程师专业资格考试试题及答案解析
- 2025年安全员岗位换新安全知识题库
- 机电设备管理知识培训课件
- 机电行业外贸知识培训课件
- 2025年广播节目主持人国家职业资格考试试题及答案解析
- 2025年特殊教育师资格模拟题
- 2025年安全长助理笔试通关模拟题
- 2025年宠物医疗AI面试模拟及答案
- 2025年安全员C证考试难点题库冲刺
- 数学课件动画设计教学
- 2025北师大版七年级数学下册期末综合素质测试卷
- 机器人学导论 课件全套 王伟 第1-5章-绪论 -操作臂的控制方法
- 2025至2030年中国稀奶油市场分析及竞争策略研究报告
- DB11T 695-2025 建筑工程资料管理规程
- 高考补习学生管理制度
- 检验科三基培训
- 占用林地补偿协议书
- 信息技术智能办公教程 课件 任务5-邮件合并
- 中建三局项目商务策划书(23P)
- 高一数学必修一必修二各章知识点总结
- 《拆装液压系统》课件
评论
0/150
提交评论