数据结构中图的建立及算法实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京工程学院
通信工程学院
实验报告
课程名称数据结构
实验项目名称图的建立及遍历算法的实现
实验学生班级
实验学生姓名
实验时间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;i { scanf("%d",&G.vertices[i].data); G.vertices[i].firstarc=NULL; } for(k=0;k { printf("please input arc "); scanf("%d,%d",&i,&j); s=(ArcNode*)malloc(sizeof(ArcNode)); s->adjvex=j; s->nextarc=G.vertices[i].firstarc; G.vertices[i].firstarc=s; } } 五.关键算法 流程图 图的构造流程图 主程序流程图 六.测试结果1.主菜单页面 2.输入显示 3.遍历结果 4.邻接矩阵 七.分析与总结 通过一学期对《数据结构》的学习,我初步掌握了数据结构的设计流程,和处理一些基本问题的算法的设计,以及如何对算法进行初步评估分析。在此基础上我完成了此次课程设计。我所做的题目是图的建立及输出,我完成的是无向图和无向网的构造,深度优先搜索遍历,广度优先搜索遍历,和相应邻接矩阵的输出。在这课程设计是我认真复习了书中关于图的一章的内容,并在网上查找了一些资料,进一步学习,总结了他人经验,并请教了同学。确定基本算法,主程序的结构,然后具体实施,完成了本次课程设计项目。在做课程设计的过程中及在编写完成调试的过程中,我发现了许多错误,及时对算法进行了优化修改,并掌握分析错误的一些小技巧。