ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:66.67KB ,
资源ID:16271403      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16271403.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图的基本操作Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图的基本操作Word格式文档下载.docx

1、 输入:将要求解的无/有向图按规则输入对应的文件 输出:通过主菜单的选择,按需实现对图的各种操作,显示结果并保存到相应的 文件中。 源程序说明: 头文件: graphics.h 函数实现:graphics.cpp 主函数: main.cpp 存放的文件说明: 无向图:graphics1.txt 存放格式为第一行存放图的顶点数n,边数b,下面每行存放两个相邻顶点:Vi,Vj 有向图:graphics2.txt 存放格式为第一行存放图的顶点数n,下面每行存放两个相邻顶点Vi-Vj: 无向图邻接表:adjlist1.txt 有向图邻接表:adjlist2.txt 无向图邻接矩阵:adjmatrix1

2、.txt 有向图邻接矩阵:adjmatrix2.txt所有抽象数据类型的定义如下:/定义邻接表的边节点类型 struct EdgeNode int adjvex; EdgeNode *next; ;/定义邻接表类型typedef EdgeNode *ADJLIST;各模块的具体实现程序是:Graphicscpp各模块的的功能及参数说明:graphics.h 如下:/对图操作的主菜单void MainMenue();/初始化邻接表void InitialAdjList(ADJLIST &GL, int n);/以文件方式输入图/bool InputGraphics();/建立图的邻接表void

3、CreatAdjList(ADJLIST &GL, int &n, int m);/建立图的邻接矩阵void CreatAdjMatrix(ADJLIST &/从初始点出发深度优先搜索由邻接表GL表示的图void DFSAdjList(ADJLIST GL, bool *&visited, int i, int n);/从初始点出发广度优先搜索由邻接表GL表示的图void BFSAdjList(ADJLIST GL, bool *&4、测试结果1、图是否有向的选择、主菜单界面:2、建立邻接表的测试结果:3、建立邻接矩阵的测试结果:4、广度优先搜索的测试结果:5、深度优先搜索的测试结果:6、退出

4、界面:5、系统不足与经验体会系统不足:异常处理不够健壮,不能够用很形象的方式打印图的直观图。经验体会:通过这次实验使我对图有了比较深入的了解,熟悉了图的基本操 作,同时也感受到了看似简单的程序实现,真正做起来很费劲,有很多的 困难需要去克服。6、附录:源代码(带注释)graphics.h 源代码如下:#ifndef GRAPHICS_H#define GRAPHICS_Hstruct EdgeNode;#endifGraphics.cpp 源代码如下:#include stdio.hstdlib.h#include graphics.h#define MAX_SIZE 100using nam

5、espace std;/部分函数原型声明void Check(int n, int &i, int &j);/全局变量,控制递归函数中提示符的输出int flag = 1;void MainMenue() coutn*endl;* * 1.建立图的邻接表。 * 2.建立图的邻接矩阵。* 3.深度优先遍历图。* 4.广度优先遍历图。* 5.退出。* fulme */* End of MainMuenue() */GL, int n)/初始化图的邻接表 GL = new EdgeNode*n; for (int i = 1; i = n; i+) GLi = NULL;/* End of Init

6、ialAdjlist() */n, int m) FILE *in1; FILE *in2; FILE *out1; FILE *out2; int i; int j; int k; int b; char ch; int flag = 0; if (m = 0) /建立无向图的邻接表 if (in1 = fopen(graphics1.txt, rb) = NULL)打开 graphics1.txt 失败! exit(1); if (out1 = fopen(adjlist1.txtwb打开 adjlist1.txt 失败! flag = 1; /读入顶点的个数, , 边数 fscanf(i

7、n1, %d, &n);%cch);b); for (k = 0; k adjvex = j; next = GLi; GLi = p; /向序号为j的单链表的表头插入一个节点 p = new EdgeNode; adjvex = i; next = GLj; GLj = p; /输出邻接表,并保存到adjlist1.txt中endln=无向图的邻接表为: for (i = 1; EdgeNode *p = GLi;i - 1 next)|-|-|p - adjvex;%s, p - adjvex);|rn if (flag)无向图的邻接表已保存到adjlist1.txt中 fclose(in

8、1); fclose(out1); else if (m = 1) /建立有向图的邻接表 if (in2 = fopen(graphics2.txt打开 graphics2.txt 失败! if (out2 = fopen(adjlist2.txt打开 adjlist2.txt 失败! fscanf(in2, /向序列号为i的表头插入一个边节点 /输出图的邻接表有向图的邻接表为: fprintf(out2, 有向图的邻接表已保存到adjlist2.txt fclose(in2); fclose(out2);/* End of CreatAdjList() */ int matrixMAX_SI

9、ZE + 1MAX_SIZE + 1; /初始化图的邻接矩阵= MAX_SIZE; for (j = 1; j j+) matrixij = 0; /建立无向图的邻接矩阵adjlmatrix1.txt打开 adjmatrix1.txt 失败! matrixij = matrixji = 1;= b;matrixij ;%d , matrixij);无向图的邻接矩阵已保存到adjmatrix1.txt中! /建立有向图的邻接矩阵adjmatrix2.txt打开 adjmatrix2.txt 失败! for (k = 1; matrixij = 1;有向图已保存到adjmatrix2.txt中!/

10、* End of CreatAdjMatrix() */visited, int i, int n)/从初始点出发递归深度优先搜索邻接表GL表示的图 flag = 0;n=n图的深度优先遍历序列:i /j为Vi的一个邻接点的序号 if (!visitedj) DFSAdjList(GL, visited, j, n); next;/* End of DFSAdjList() */从初始点开始广度优先搜索邻接表GL表示的图 const int MaxLength = 100; /定义一个队列q, 其元素类型为整型 int qMaxLength = 0; /定义队首和对尾指针 int front

11、= 0, rear = 0;n图的广度优先遍历序列: visitedj = false;/访问Vi q+rear = i; while (front != rear) /当队列非空时进行循环处理 /删除队首元素,第一次执行时k的值为i front = (front + 1) % MaxLength; int k = qfront; /取邻接表的表头指针 EdgeNode *p = GLk; /依次搜索Vk的每个节点 /Vj为Vk的一个邻接节点j= 0 &= n & j = n)n输入有误! break;/* End of Check() */main.cpp 源代码如下:int main()

12、int n; int m; /是否为有向图 bool *visited = new boolMAX_SIZE; ADJLIST gl; /初始化邻接表 InitialAdjList(gl, MAX_SIZE);=请选择图是否有向(0无/1有): cinm; MainMenue();请输入你的选择: ch; switch (ch) case 1: CreatAdjList(gl, n, m);2 CreatAdjMatrix(gl, n, m);3 visitedi = false; DFSAdjList(gl, visited, 1, n);4 BFSAdjList(gl, visited, 1, n);5 default:输入有误! return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1