免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图的遍历班级:计算机09级网络工程2班 姓名:+ 学号:0925113018完成日期:2010.12.30题目:编制一个创建有向图和无向图然后对它们进行遍历的程序。一、需求分析1、用邻接矩阵和邻接表的形式表示图,创建图。(设计中其中用邻接表表示的图内没有权重,用邻接矩阵表示的图内有权重。)2、输入图中节点的个数和边的个数,能够打印出用邻接表或邻接矩阵表示的图的储存结构。(设计中其中用邻接表表示的节点的值只能是数字,但用邻接矩阵表示的节点的值可以是字母。)3、 本程序只求出用邻接矩阵表示的无向图的深度遍历,和用邻接表表示的无向图的深度和广度遍历4、程序执行命令为:(1)输入图;(2)输出图;(3)输出遍历。二、概要设计/邻接矩阵typedef struct ArcCell int adj; ArcCell *info;ArcCell, AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct char vexsMAX_VERTEX_NUM; AdjMatrix arcs; int vexnum,arcnum;MGraph;/邻接表typedef struct ArcNode /定义边结点 int adjvex; ArcNode *nextarc;ArcNode;typedef struct VNode /定义顶点结点 char data; ArcNode *firstarc;VNode,AdjListMAX_VERTEX_NUM;typedef struct /定义无向图 AdjList vertices; int vexnum,arcnum;ALGraph;typedef struct node /定义结点 char data; node *next;*Link;typedef struct /定义链表 Link head,tail; int len;LinkList;/关于邻接表图的操作int InitList(LinkList &L)/构造一个带头结点和尾结点的空的线性链表Lvoid add(LinkList &L,int e)/在线性链表L的结尾添加一个结点void Delete(LinkList &L,int &e)/出列,并将出列的元素值用e返回void ArcAdd(ALGraph &G,int m,int n)/在无向图中添加以m,n为顶点的边void CreateDG(ALGraph &G) /创建无向图void show(ALGraph G) /在屏幕上输入无向图的邻接表存储形式void VisitFunc(char a) /对无向图的数据进行访问的函数int FirstAdjVex(ALGraph G,int v)/返回v的第一个邻接顶点。若顶点在G中没有邻接表顶点,则返回“空”。int NextAdjVex(ALGraph G,int v,int w) /返回v的(相对于w的)下一个邻接顶点。若w是v的最后一个邻接点,则返回“回”。bool visitMAX_VERTEX_NUM;void DFS(ALGraph G,int v)/从第v个顶点出发递归地深度优先遍历图G。void DFSTraverse(ALGraph G)/对图G作深度优先遍历。void BFSTraverse(ALGraph G)/对图G作广度优先遍历。/关于邻接矩阵的操作int LocateVex(MGraph G,char v)int FirstAdjVex(MGraph G,int v)int NextAdjVex(MGraph G,int v,int w)void CreatUDG(MGraph &G)/邻接矩阵的无向图的创建void CreatDG(MGraph &G)/有向图邻接矩阵的创建bool visitedMAX_VERTEX_NUM;void DFS(MGraph G,int v)void DFSTraverse(MGraph G,int v)void print1(MGraph G)三、详细设计/邻接表的创建void CreateDG(ALGraph &G) /创建无向图 cout请输入顶点个数和边数:G.vexnumG.arcnum; cout请输入顶点值:endl; for(int i=1;it; G.verticesi.data=t; G.verticesi.firstarc=NULL; int m,n; for(int k=1;k=G.arcnum;k+) cout请输入第k条边的两个顶点:mn; if(m=G.vexnum&n0&n0) ArcAdd(G,m,n); ArcAdd(G,n,m); else coutERROR.endl; /在屏幕上输入无向图的邻接表存储形式void show(ALGraph G) cout无向图的创建完成,该图的邻接表表示为:endl; ArcNode *p; for(int i=1;i=G.vexnum;i+) if(G.verticesi.firstarc=NULL) coutiG.verticesi.dataNULLendl; else p=G.verticesi.firstarc; coutiG.verticesi.data; while(p-nextarc!=NULL) coutadjvex; p=p-nextarc; coutadjvexNULLendl; void DFSTraverse(ALGraph G)/对图G作深度优先遍历。 cout深度优先搜索的结果为:endl; for(int v=1;v=G.vexnum;v+) visitv=false; for(int m=1;m=G.vexnum;m+) if(!visitm) DFS(G,m); coutendl;void BFSTraverse(ALGraph G)/对图G作广度优先遍历。 cout广度优先搜索的结果为:endl; LinkList Q; int u; for(int m=1;m=G.vexnum;m+) visitm=false; InitList(Q);/借助辅助队列。 for(int v=1;v=1;w=NextAdjVex(G,u,w) if(!visitw) visitw=true; VisitFunc(G.verticesw.data); add(Q,w); coutendl;void CreatUDG(MGraph &G)/邻接矩阵的无向图的创建int i,j,k,w;char v1,v2;cout请输入顶点个数和边数:G.vexnumG.arcnum; cout请输入G.vexnum个顶点的值:endl; for(i=0;iG.vexsi; for(i=0;iG.vexnum;+i) for(j=0;jG.vexnum;+j) G.arcsij.adj=0; G.=NULL; for( k=1;k=G.arcnum;+k) cout请输入第k条边的两个顶点值和它们的权重:v1v2w; i=LocateVex(G,v1); j=LocateVex(G,v2); G.arcsij.adj=w; G.arcsji=G.arcsij; void DFSTraverse(MGraph G,int v)/对邻接矩阵图的递归深度遍历visitedv=true;coutG.vexsv=0;w=NextAdjVex(G,v,w)/=if(!visitedw) DFSTraverse(G,w);四、调试分析在写邻接矩阵的NextAdjVex功能的时候,i从w开始,但是遍历到一半就停止了,后来发现第W个已经遍历过了,所以一直在循环遍历第W个,所以改成w+1。在写邻接矩阵无向图的深度优先遍历时,for(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁都县中小学教师招聘笔试参考题库及答案解析
- 急性胰腺炎的科普
- 2025年泉州石狮市中小学教师招聘笔试参考试题及答案解析
- 2025年E类医学联考病理知识考前冲刺备考300题(含答案)
- 2025年环江毛南族自治县中小学教师招聘笔试备考试题及答案解析
- 2025年虚拟演唱会票务系统协议
- 镇卫生院重大公共卫生项目工作总结
- 2025年虚拟数字人直播带货授权合同
- 2025年城步苗族自治县教师招聘参考题库及答案解析
- 云南文化艺术职业学院《动物生物学实验》2024-2025学年第一学期期末试卷
- 2025河北邯郸市产业投资集团有限公司下属企业专业人才招聘78人笔试考试备考试题及答案解析
- 工业气瓶安全使用培训
- 大跨度钢结构厂房吊装方案
- 2025年挖掘机驾驶员岗位招聘面试参考试题及参考答案
- 2025年中央八项规定精神学习教育题库及答案
- 老年人进食照护课件
- 焊工证复审考试题及答案
- 福建省福州市【统招专升本】计算机真题(含答案)
- 统编版九年级上册语文期末复习:全册重点考点手册
- 慢性心力衰竭患者姑息治疗与安宁疗护方案
- 2025内蒙古巴彦淖尔市交通投资(集团)有限公司(第二批)招聘40人笔试考试参考试题及答案解析
评论
0/150
提交评论