《算法与数据结构》课程实验任务书
2021- 2022学年第 一 学期
实验题目: 6-图的应用 实验日期:2021-11-29
一、实验目的
1.熟悉图的存储结构;
2.熟悉图的创建操作;
3.熟悉图的遍历操作。
二、实验要求
1.每个同学必须独立完成;
2.程序要有注释,包括对总体功能、关键句、段的说明;
3.程序做到界面友好,对每个输入及输出要有清晰的提示;程序要具有一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置错误等;
三、实验内容
1.理解并实现无向图邻接矩阵的创建,理解并实现无向图邻接矩阵方式存储的广度优先遍历的算法,转换成程序并上机实现;
//用两个数组分别存储顶点表和邻接矩阵
#define MaxInt 32767 //表示极大值,即∞
#define MVNum 100 //最大顶点数
typedef char VerTexType; //假设顶点的数据类型为字符型
typedef int ArcType; //假设边的权值类型为整型
typedef struct{
VerTexType vexs[MVNum]; //顶点表
ArcType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum,arcnum; //图的当前点数和边数
}AMGraph;
2.理解并实现无向图邻接表的创建的算法,理解并实现无向图的深度优先遍历的算法;转换成程序并上机实现,并按要求撰写实验报告;
#define MVNum 100 //最大顶点数
typedef struct ArcNode{ //边结点
int adjvex; //该边所指向的顶点的位置
OtherInfo info; //和边相关的信息
struct ArcNode * nextarc; //指向下一条边的指针
}ArcNode;
typedef struct VNode{
VerTexType data; //顶点信息
ArcNode * firstarc; //指向第一条依附该顶点的边的指针
}VNode, AdjList[MVNum]; //AdjList表示邻接表类型
typedef struct{
AdjList vertices; //邻接表
int vexnum, arcnum; //图的当前顶点数和边数
}ALGraph;
3.(选做)无向图邻接表存储方式的广度优先遍历,转换成程序并上机实现。
四、实验分析总结
可包括但不限于:程序编译、运行中出现错误消息及相应解决方法,实验中遇到的难点、实验的收获等。
实 验 报 告
一、实验目的 1.熟悉图的存储结构; 2.熟悉图的创建操作; 3.熟悉图的遍历操作。 |
二、实验要求 1.每个同学必须独立完成; 2.程序要有注释,包括对总体功能、关键句、段的说明; 3.程序做到界面友好,对每个输入及输出要有清晰的提示;程序要具有一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置错误等; 三、实验内容 |
1.理解并实现无向图邻接矩阵的创建,理解并实现无向图邻接矩阵方式存储的广度优先遍历的算法,转换成程序并上机实现; ①主函数 #include<stdio.h> #include<iostream> #include "AMG.h" using namespace std; int main() { VerTexType ch; AMGraph G; CreateUDN(G); Printf_AMG(G); cout<<"开始BFS,请输入开始顶点:";cin>>ch; AMG_BF(G,LocateVex(G,ch)); return 0; } ②头文件 AMG.h 和 Queue.h AMG.h #include<stdio.h> #include<iostream> #include "Queue.h" #define MaxInt 32767 //表示极大 |