- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图的遍历问题 需求分析 本程序读入一个图,需要做的是遍历图给出遍历的路径,要求用两种方法,广度优先遍历和深度优先遍历。 一个图以邻接矩阵的形式由用户通过键盘输入,对非法输入不做处理,即假设输入都是合法的。 在dos界面输出运算结果。 测试数据 输入 输入八个顶点 输入顶点0:a 输入顶点1:b 输入顶点2:c 输入顶点3:d 输入顶点4:e 输入顶点5:f 输入顶点6:g 输入顶点7:h 输入九条弧 输入弧0:a b 1 输入弧1:b d 1 输入弧2:be 1 输入弧3:d h 1 输入弧4:e h 1 输入弧5:a c 1 输入弧6:c f 1 输入弧7:c g 1 输入弧8:f g 1 输出 广度优先遍历: a b d h e c f g 深度优先遍历: a b c d e f g h 二.概要设计 ?? 算法的基本思想 把图以邻接矩阵的形式储存,再根据广度优先遍历和深度优先遍历遍历的特点分别定义不同的函数求解 程序的流程 程序由三个模块组成 (1)输入模块:输入一个顶点数(顶点个数不大于30)和弧数,输入顶点和输入弧。 (2)调用循环模块:先把图一邻接矩阵的形式存放,在利用递归求出图的深度和广度优先遍历 (3)输出模块:屏幕上显示出结果。 伪代码实现: 1、深度优先遍历 伪代码:1.访问顶点v;visited[v]=1;2.w=顶点v的第一个邻接点;3.while(w存在) if(w未被访问)从顶点w出发递归执行该算法; w=顶点v的下一个邻接点; 2、广度优先遍历 伪代码:1.初始化队列Q;2.访问顶点v;visit[v]=1;顶点v入队列Q;3. while(队列Q非空) v=队列Q的对头元素出队;w=顶点v的第一个邻接点;while(w存在) 如果w未访问,则访问顶点w;visited[w]=1;顶点w入队列Q;w=顶点v的下一个邻接点。 三.详细设计 #includestdio.h #includestdlib.h typedef struct ArcNode {//弧结点结构 int adjvex; struct ArcNode *next; }ArcNode; typedef struct VNode {//顶点结点结构 int data; char name; int info; ArcNode *firstarc; }VNode,AdjList[30]; typedef struct {//邻接表结构 AdjList vertices; int vexnum,arcnum; }ALGraph; typedef struct Stack {//栈结构 int *top,*base; int length; }Stack; typedef struct QNode {//队列结点结构 int data; struct QNode *next; }QNode,*QueuePtr; typedef struct Queue {//队列结构 QueuePtr front,rear; }Queue; void CreatGraph(ALGraph Net); void DFS(ALGraph Net); bool Search(ALGraph Net,int x,char e); void InitStack(Stack s); void push(int data,Stack s); void pop(Stack s); int Gettop(Stack s); void BFS(ALGraph Net); void InitQueue(Queue Q); void EnQueue(int e,Queue Q); void DeQueue(int y,Queue Q); int GetQop(Queue Q); main() { ALGraph Net; int i; CreatGraph(Net); printf(深度优先遍历:); DFS(Net); printf(\n); for(i=0;iNet.vexnum;i++) Net.vertices[i].info=0; printf(广度优先遍历:); BFS(Net); printf(\n); } void CreatGraph(ALGraph Net) {//创建一个邻接表Net int i; char e1,e2; int x1,x2,a[20]; ArcNode *p,*q; printf(请输入顶点数和弧数:); scanf(%d %d,Net.vexnum,Net.arcnum); printf(\n请输入%d个顶点:\n,Net.vexnum); getc
您可能关注的文档
最近下载
- DB46_T 554-2021 油棕组培苗繁育技术规程.docx VIP
- 新高考必背文言文原文及译文.doc VIP
- 合成氨主要设备构造及设备一览表.pdf VIP
- 更换10kV及以下线路导线标准作业流程.pdf VIP
- 现代卫星通信系统工程建设概预算与设计施工技及技术标准规范实用手册.doc VIP
- 乐学英语口语教程(第二版)Unit 6 PPT课件.pptx VIP
- 剪映电脑版使用教程(超详细).docx VIP
- 智能图像处理:Python和OpenCV实现 课件 第二章 数字图像的获取和基本运算.pptx
- AnyBackup CDM 7 型号和功能列表.docx VIP
- 新人教版(2022新课标)物理八年级上册课件 3.1 温度.pptx VIP
文档评论(0)