数据结构中图的建立及算法实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.邻接矩阵

七.分析与总结

通过一学期对《数据结构》的学习,我初步掌握了数据结构的设计流程,和处理一些基本问题的算法的设计,以及如何对算法进行初步评估分析。在此基础上我完成了此次课程设计。我所做的题目是图的建立及输出,我完成的是无向图和无向网的构造,深度优先搜索遍历,广度优先搜索遍历,和相应邻接矩阵的输出。在这课程设计是我认真复习了书中关于图的一章的内容,并在网上查找了一些资料,进一步学习,总结了他人经验,并请教了同学。确定基本算法,主程序的结构,然后具体实施,完成了本次课程设计项目。在做课程设计的过程中及在编写完成调试的过程中,我发现了许多错误,及时对算法进行了优化修改,并掌握分析错误的一些小技巧。

相关文档
最新文档