版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构教程计算机实验报告实验7。图形算法在计算机上的实现一、实验目的:1.理解知名图形的定义和基本术语,掌握图形的几种存储结构。2.掌握邻接矩阵和邻接表的定义和特点,通过实例分析掌握邻接矩阵和邻接表的类型定义。3.掌握图遍历的定义、复杂性分析和应用,掌握图遍历方法及其基本思想。二、实验内容:1.建立无向图的邻接矩阵2.图形的深度优先搜索3.图的广度优先搜索Iii .实验步骤和结果:1.建立无向图的邻接矩阵;1)源代码:#包括“stdio.h”#包括 stdlib.h #定义MAXSIZE 30typedef结构char顶点MAXSIZE;/顶点是字符类型,顶点表的长度小于最大尺寸int ed
2、gesMAXSIZEMAXSIZE;/边是成形的,边是相邻的矩阵 MGraph/MGraph是由相邻矩阵存储的图形类型void CreatGraph(MgRaph * g,int e,int n)/建立无向图的邻接矩阵g-egdes,其中N是顶点数,E是边数I,j,k;printf( vertex的输入数据(0 n-1): n );对于(I=0;I vertexI=I;/读入顶点信息对于(I=0;IED gesIj=0;/初始化邻接矩阵对于(k=1;k=e。K )/输入E边printf(“(I,j):”的输入边);scanf(%d,%d ,I,j);g边Ij=1;g边jI=1;void mai
3、n()I,j,n,e;g。/建立一个指向邻接矩阵存储的图形类型的指针g=(MgRaph *)malloc(sizeof(MgRaph);/生成相邻证明存储图类型的存储空间printf(“图形:的输入大小”);/输入邻接矩阵的大小scanf(“% d”,n);printf(“输入边数:”);/输入邻接矩阵的边数scanf(“% d”,e);创建图形(g,e,n);/生成存储图的邻接矩阵printf(“输出图形: n”);/输出存储图的邻接矩阵对于(I=0;IED gesIj);printf( n );2)运行结果:2.图形的深度优先搜索:1)源代码:#包括“stdio.h”#包括 stdlib.
4、h #定义MAXSIZE 30Typedef结构节点/相邻表节点int adjvex/邻近点字段结构节点*下一步;/指向下一个相邻边缘节点的指针字段边缘节点;/相邻表的节点类型Typedef结构vnode/顶点表节点int顶点;/顶点字段EdgeNode * firstedge/指向相邻表的第一个相邻边缘节点的指针字段顶点节点;/顶点表的节点类型void CreatAdjlist(顶点g,点e,点n)/创建无向图的邻接表,其中N是顶点数,E是边数,g存储N个顶点表节点edge node * p;I,j,k;printf( vetex的输入数据(0 n-1); n );对于(I=0;iadjve
5、x=j;/在顶点vi的邻接表中添加带有相邻点j的节点p-next=gi。firstedge/插入是在相邻的表头执行的gi。first edge=p;p=(EdgeNode *)malloc(size of(EdgeNode);p-adj vex=I;/在顶点vj的邻接表中添加具有相邻点I的节点p-next=gj。firstedge/插入是在相邻的表头执行的gj。first edge=p;int已访问MAXSIZE;/MAXSIZE是一个大于或等于无向图顶点数的常数void DFS(顶点g,点I)edge node * p;printf(M ,gi。顶点);/输出顶点一信息,即访问顶点一访问次数
6、I=1;p=gi。firstedge/根据顶点I的指针第一条边,找到其邻表的第一个邻边节点同时(p!=空)如果(!已访问p-调整)/如果没有访问过相邻的边缘节点,外勤部(g,p-adj vex);/对该边缘节点进行深度优先搜索p=p-下一个;/找到顶点1的下一个相邻边节点void DFSTraverse(VertexNode g,int n)/深度优先搜索遍历存储在邻接表中的图,其中G是顶点数,N是顶点数int I;对于(I=0;iadjvex=j;/在固定点vi的邻接表中添加带有邻接点j的节点p-next=gi。firstedge/插入是在相邻的表头执行的gi。first edge=p;p=
7、(EdgeNode *)malloc(size of(EdgeNode);p-adj vex=I;/在顶点vj的邻接表中添加具有相邻点I的节点p-next=gj。firstedge/插入是在相邻的表头执行的gj。first edge=p;typedef结构节点int数据;结构节点*下一步; QNode/链队列节点的类型typedef结构QNode *前,*后;/将头指针和尾指针放入结构的链队列中 LQueue/链队列类型空初始化_ lxue(lxue * * q)/用头节点创建一个空队列QNode *p。* q=(Lqueue *)malloc(sizeof(Lqueue);/应用带有前导指针
8、和尾随指针的链队列p=(Qnode *)malloc(sizeof(Qnode);/应用程序链队列的头节点p-next=空;/头节点的下一个指针被设置为空(* q)-前端=p;/团队领导指针指向头节点(* q)-后部=p。/尾部指针指向头部节点intempty _ lxue(lxue * q)/判断团队为空团队如果(q-前端=q-后端)/为空返回1;其他返回0;空in _ lxue(lxue * q,int x)/加入团队QNode *p。p=(Qnode *)malloc(sizeof(Qnode);/申请新的链队列节点p-数据=x;p-next=空;/当新节点用作队列尾节点时,其下一个字段
9、为空q-后-下一个=p;/将新节点*p链接到原始团队的末端节点q-后=p;/使尾部指针指向新的尾部节点*p清空_ lxue(lxue * q,int * x)/离开团队QNode *p。if(空_LQueue(q)printf(队列为空! n );/空,离开团队失败其他p=q-前-后;/指针P指向链队列的第一个数据节点(即头节点)q-front-next=p-next;/头节点的下一个指针指向链队列的第二个数据节点(即删除第一个数据节点)* x=p-数据;/通过x返回删除的头节点数据免费(p);如果(q-front-next=NULL) /如果队列在离开队列后为空,它将被设置为空队列q-后=q
10、-前;int已访问MAXSIZE;/MAXSIZE是一个大于或等于无向图顶点数的常数void BFS(顶点g,LQueue *Q,int i)/广度优先搜索遍历邻接表中存储的图,其中g是顶点表,q是团队指针,I是第I个顶点int j,* x=j;edge node * p;printf(M ,gi。顶点);/输出顶点一信息,即访问顶点一访问次数I=1;/将顶点I设置为访问标志队列中(Q,I);/顶点1加入团队q同时(!当队列q不为空时,输出队列(Q,x);/出列在头的顶部并发送J(暂时指定为顶部J)p=gj。firstedge/根据顶点J的头指针找到其相邻表的第一个相邻边节点同时(p!=空)如果(!已访问p-调整)/如果没有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轨道交通调度员岗前行为考核试卷含答案
- 东湖公园跨年活动方案策划(3篇)
- 全员核酸的应急预案(3篇)
- 临时石油库施工方案(3篇)
- 亚运跑道施工方案模板(3篇)
- 分层封堵油井施工方案(3篇)
- 1-1-Bis-4-dimethylamino-phenyl-4-4-bipyridine-1-1-diium-dichloride-生命科学试剂-MCE
- 单人值班猝死应急预案(3篇)
- 厨房油烟道应急预案(3篇)
- 启动寒潮应急预案方案(3篇)
- T/CARD 014-2021言语语言障碍儿童康复服务规范
- 2026甘肃省机关事业单位工勤技能岗位技术等级考试(公路施工与养护·中级)历年参考题库含答案详解
- 【方案】穿透式监管体系建设方案可编辑
- (2026年)口腔种植科室规章制度
- 《红星照耀中国》第五章:长征 带读课(课件)
- 部编版六年级上册语文1-8单元基础知识默写填空专项训练(含答案)
- 常用电气元件基础知识介绍
- 2025年海南省事业单位D类教师岗笔试试题及答案
- 2026年危化品重点县指导服务企业自查表考试试题及答案
- 建筑结构健康监测技术规程
- 遵义会议放光辉合唱简谱
评论
0/150
提交评论