数据结构图的遍历上机说课.doc

成绩 辽宁工程技术大学上机实验报告 实验名称 图的遍历 院系 软件学院 专业 软件工程 班级 软升本14-1 姓名 学号 日期 2014.12.26 实验 目的 简述本次实验目的: 1.掌握图的邻接矩阵和邻接表存储思想及其算法的实现。 2.掌握图的深度、广度优先遍历算法思想及其程序实现。 3.掌握图的常见应用算法的思想及其程序实现。 实验 准备 你为本次实验做了哪些准备: 提前学习和掌握图的邻接表存储、建立、遍历及其应用。 能够使用C语言编写程序。 实验 进度 本次共有 5 个练习,完成 5 个。 实 验 总 结 实 验 总 结 实 验 总 结 实 验 总 结 实 验 总 结 实 验 总 结 实 验 总 结 实 验 总 结 实 验 总 结 日 本次实验的收获、体会、经验、问题和教训: #include stdio.h #include stdlib.h #include malloc.h #define M 20 /*定义图*/ typedef struct{ int V[M]; int R[M][M]; int vexnum; }Graph; typedef struct ArcBox{ int tail,head; struct ArcBox *headlink; struct ArcBox *taillink; }ArcBox;//定义链元素 typedef struct VexNode{ int data; ArcBox *firstin; ArcBox *firstout; }VexNode;//定义结点元素 typedef struct { VexNode xlist[M];//表向量 int vexnum,arcnum; }OlGraph; /*创建图*/ void creatgraph(Graph *g,int n) { int i,j,r1,r2; g-vexnum=n; /*顶点用i表示*/ for(i=1;i=n;i++) { g-V[i]=i; } /*初始化R*/ for(i=1;i=n;i++) for(j=1;j=n;j++) { g-R[i][j]=0; } /*输入R*/ printf(请输入图中边的两个顶点 (以0 0结束):\n); scanf(%d%d,r1,r2); while(r1!=0r2!=0) { g-R[r1][r2]=1; g-R[r2][r1]=1; scanf(%d%d,r1,r2); } } /*打印图的邻接矩阵*/ void printgraph(Graph *g) { int i,j; for(i=1;i=g-vexnum;i++) { for(j=1;j=g-vexnum;j++) { printf(%2d ,g-R[i][j]); } printf(\n); } } /*全局变量:访问标

文档评论(0)

1亿VIP精品文档

相关文档