数据结构中图的建立和算法实现.docVIP

  • 9
  • 0
  • 约2.07千字
  • 约 6页
  • 2017-05-13 发布于北京
  • 举报
数据结构中图的建立和算法实现

南京工程学院 通信工程学院 实 验 报 告 课程名称 数 据 结 构 实验项目名称 图的建立及遍历算法的实现 实验学生班级 实验学生姓名 实验时间 2014.5.29 实验地点 信 息 楼 C207 实验成绩评定 指导教师签字 年 月 日 一、实验目的: 1.掌握图的定义及图的存储结构。 2.掌握图的遍历算法 二、实验内容: 1.定义图的数据结构。 2.编写函数,用邻接表实现图的存储结构,求图的顶点的度数。 3.编写函数,输出图的遍历序列。 三、实验要求: 1.数据结构定义正确,程序编码规范。 2.撰写实验报告,写出程序运行结果。 3.分析算法,写出本次实验总结。 四、实现提示 1.数据结构定义 #define MAX_VERTEX_NUM 100 /*最大顶点数为100*/ int visited[MAX_VERTEX_NUM]; typedef int VertexType; /*表结点*/ typedef struct ArcNode { int adjvex; struct ArcNode * nextarc; }ArcNode; /*头结点*/ typedef struct VNode { VertexType data; ArcNode * firstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum,arcnum; }ALGraph; 2.图的存储(邻接表存储) void CreateALGraph(ALGraph G) { int i,j,k; ArcNode *s; printf(input data:顶点数,边数:\n); scanf(%d,%d,G.vexnum,G.arcnum); printf(\nplease v data:); for(i=0;iG.vexnum;i++) { scanf(%d,G.vertices[i].data); G.vertices[i].firstarc=NULL; } for(k=0;kG.arcnum;k++) { printf(please input arc i,j); scanf(%d,%d,i,j); s=(ArcNode*)malloc(sizeof(ArcNode)); s-adjvex=j; s-nextarc=G.vertices[i].firstarc; G.vertices[i].firstarc=s; } } 五.关键算法 流程图 图的构造流程图 Y N Y N Y N 主程序流程图 Y N 六.测试结果 1.主菜单页面 2.输入显示 3.遍历结果 4.邻接矩阵 七.分析与总结 通过一学期对《数据结构》的学习,我初步掌握了数据结构的设计流程,和处理一些基本问题的算法的设计,以及如何对算法进行初步评估分析。在此基础上我完成了此次课程设计。我所做的题目是图的建立及输出,我完成的是无向图和无向网的构造,深度优先搜索遍历,广度优先搜索遍历,和相应邻接矩阵的输出。在这课程设计是我认真复习了书中关于图的一章的内容,并在网上查找了一些资料,进一步学习,总结了他人经验,并请教了同学。确定基本算法,主程序的结构,然后具体实施,完成了本次课程设计项目。在做课程设计的过程中及在编写完成调试的过程中,我发现了许多错误,及时对算法进行了优化修改,并掌握分析错误的一些小技巧。 1 开始 开始 输入vexnum,arcnum IncInfo 选择图的类型 构造图 i=i+1 输入顶点 ivexnum 深度遍历 广度遍历 j=j+1 初始化邻 接矩阵 ivexnum 结束 jvexnum i=i+1

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档