实验五图应用.doc_第1页
实验五图应用.doc_第2页
实验五图应用.doc_第3页
实验五图应用.doc_第4页
实验五图应用.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海建桥学院本科数据结构实验报告(五) 课程名称:数据结构实验类型:综合实验室名称:机房开课学院:信息技术学院学生姓名:童宇奇专业:数字媒体艺术学号:10B01130141指导老师: 陈莲君实验五:图应用实验日期: 2011 年 11 月 23 日 评阅成绩: 实验目的及要求1. 熟练掌握图的邻接矩阵和邻接表的存储方式;2. 实现图的一些基本运算,特别是深度优先遍历和广度优先遍历;实验内容用邻接矩阵法建一个无向连通图(顶点信息为顺序字母A,B,C,D.,而非键盘输入),分别用dfs(深度优先搜索)和bfs(广度优先搜索)遍历,输出图中顶点信息并验证。邻接矩阵图类型定义:#define MAX 40 typedef char vexType; /*顶点类型*/ typedef struct vexType vexMAX; int arcsMAXMAX; int vn,en; MGraph; 顺序存储的循环队列类型定义:typedef int datatype; /*队列元素为图的顶点下标,int型*/typedef struct node datatype dataMAX; int front, rear; SeqQueue; /*顺序存储的循环队列类型*/任务1自定义函数库文件Queue.h,完成队列的相关操作。2创建一个程序文件sy5.cpp,自定义相应函数完成以下操作:(1)void createGraph(MGraph *g) /*建邻接矩阵存储的无向图*/(2)void visit(MGraph *g,int v) /*访问v号顶点*/(3)void dfs(MGraph *g,int v) /*邻接矩阵存储的图的深度优先搜索*/(4)void bfs(MGraph *g,int v) /*邻接矩阵存储的图的广度优先搜索*/3 自定义函数库文件Queue.h 与sy5.cpp源程序清单(含必要的注释) sy5.cpp:#define MAX 40#include Queue.hint visitedMAX;typedef char vexType; /*顶点类型*/typedef structvexType vexMAX;int arcsMAXMAX;int vn,en; MGraph;void createGraph(MGraph *g); /*建邻接矩阵存储的无向图*/void visit(MGraph *g,int v); /*访问v号顶点*/void dfs(MGraph *g,int v); /*邻接矩阵存储的图的深度优先搜索*/void bfs(MGraph *g,int v); /*邻接矩阵存储的图的广度优先搜索*/void main()MGraph g;int i,v;createGraph(&g); /*建图*/for(i=0;ig.vn;i+) /*标记数组初始化*/visitedi=0;printf(开始顶点:); /*输入遍历开始顶点*/scanf(%d,&v);printf(输出(dfs):); /*DFS输出*/dfs(&g,v);printf(n);for(i=0;ivn);printf(输入边数:);scanf(%d,&g-en);for(i=0;ivn;i+) /*二维数组初始化*/for(j=0;jvn;j+)g-arcsij=0;for(v=0;vvn;v+) /*确定数据*/g-vexv=a;a+;printf(输入结构:n); /*确定边*/for(v=0;ven;v+)scanf(%d %d,&i,&j);g-arcsij=1;g-arcsji=1;void visit(MGraph *g,int v)printf(%c,g-vexv); void dfs(MGraph *g,int v)int j;visit(g,v); /*输出数据*/visitedv=1; /*标记已访问*/for(j=0;jvn;j+)if(g-arcsvj=1 & visitedj=0)dfs(g,j); /*递归*/ void bfs(MGraph *g,int v) int i,w; SeqQueue Q; InitQueue(&Q); /*队列初始化*/EnQueue(&Q,v); /*入队*/visitedv=1; /*标记已访问*/ while(!EmptyQueue(&Q)w=DeQueue(&Q); /*出队*/visit(g,w); /*输出数据*/for(i=0;ivn;i+)if(g-arcswi=1 & visitedi=0)EnQueue(&Q,i); /*入队*/visitedi=1; /*标记已访问*/Queue.h:#include typedef int datatype; /*队列元素为图的顶点下标,int型*/typedef struct nodedatatype dataMAX;int front, rear; SeqQueue; /*顺序存储的循环队列类型*/void InitQueue(SeqQueue *Q); /*初始化队列*/void EnQueue(SeqQueue *Q,int v); /*入队*/datatype DeQueue(SeqQueue *Q); /*出队*/int EmptyQueue(SeqQueue *Q); /*判队空*/int FullQueue(SeqQueue *Q); /*判队满*/void InitQueue(SeqQueue *Q)Q-front=Q-rear=0;void EnQueue(SeqQueue *Q,int v)if(FullQueue(Q)printf(队列已满); /*判队满*/return;Q-rear=(Q-rear+1)%MAX; /*入队*/Q-dataQ-rear=v;datatype DeQueue(SeqQueue *Q)if(EmptyQueue(Q)printf(队列为空); /*判队空*/return -1;Q-front=(Q-front+1)%MAX; /*出队*/return Q-dataQ-front;int EmptyQueue(SeqQueue *Q)return Q-front=Q-rear;int FullQueue(SeqQueue *Q)return (Q-rear+1)%MAX=Q-front;3 程序运行结果的屏幕拷贝内容 A图结构: B C D E实验总结分析(本程序的重点与难点,调试中出现的问题及解决方法等) 通过这次试验,我渐渐熟悉了关于图的算法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论