图的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨工业大学计算机科学与技术学院
实验报告
课程名称:数据结构
课程类型:必修
实验项目名称:第三次实验实验题目:图的基本操作
班级:10803102
学号:1080310225
姓名:陈虞付
一、实验目的
实现有向图、无向图的基本操作。
二、实验要求及实验环境
实验要求:实现有向图、无向图的基本操作(建立连接表,邻接矩阵,深度优先搜索,广度优先搜索等)。
实验环境: windows 平台、 code :: blocks 集成开发环境。
三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)
1.逻辑设计
主程序的流程:定义邻接表 gl 、bool 型数组 visited[] 。程序开始时,先初始化邻接表,然后提示图是否有向,输入选择,调用 MainMenue()函数到主菜单的选择界面,根据输入的选择调用相应的函数、实现相应的逻辑功能。
2.物理设计
程序功能:以文件方式方式输入的无 / 有向图,实现无 / 有向图的邻接表、邻接矩阵求解及对图的深度优先遍历、广度优先遍历操作。
输入:将要求解的无 / 有向图按规则输入对应的文件
输出:通过主菜单的选择,按需实现对图的各种操作,显示结果并保存到相应的文件中。
源程序说明:
头文件: graphics.h
函数实现: graphics.cpp
主函数: main.cpp
存放的文件说明:
无向图: graphics1.txt
存放格式为第一行存放图的顶点数有向图: graphics2.txt 存放格式为第一行存放图的顶点数
无向图邻接表: adjlist1.txt
有向图邻接表: adjlist2.txt
无向图邻接矩阵: adjmatrix1.txt 有向图邻接矩阵: adjmatrix2.txt 所有抽象数据类型的定义如下:
// 定义邻接表的边节点类型
struct EdgeNode n ,边数b ,下面每行存放两个相邻顶点:Vi,Vj n ,下面每行存放两个相邻顶点Vi-->Vj :Vi,Vj
int adjvex;
EdgeNode *next;
};
// 定义邻接表类型
typedef EdgeNode **ADJLIST;
各模块的具体实现程序是: Graphicscpp
各模块的的功能及参数说明: graphics.h 如下:
// 对图操作的主菜单
void MainMenue();
// 初始化邻接表
void InitialAdjList(ADJLIST &GL, int n);
// 以文件方式输入图
//bool InputGraphics();
// 建立图的邻接表
void CreatAdjList(ADJLIST &GL, int &n, int m); // 建立图的邻接矩阵
void CreatAdjMatrix(ADJLIST &GL, int &n, int m);
// 从初始点出发深度优先搜索由邻接表 GL 表示的图 void DFSAdjList(ADJLIST GL, bool *&visited, int i, int n);
//从初始点出发广度优先搜索由邻接表GL表示的图
void BFSAdjList(ADJLIST GL, bool *&visited, int i, int n);
四、测试结果
1、图是否有向的选择、主菜单界面:
2、建立邻接表的测试结果:
3、建立邻接矩阵的测试结果:
1
0 1
0 0
0 1
&
1 0
1 0
» 1
a
0 s
a
& 0
1
»
9
@
a
1
a
a
a
a
& 0
a a
a 0
» 0
» 0
U B
1 1
0 0
& 1
1 U
a a
a H
o 0
0 0
a 0
a a
o 0
» 0
9 3
a
a
9
9
9
1
8
1
&
&
a
9
8
@
»
a
1
9
a
& 0
a a
a 0
» 0
» 0
a 0
o 0
0 0
& 0
& U
a a
& H
& 0
0 0
a 1
a a
o 0
» 0
1 3
a
a
9
9
9
a
8
1
@
»
a
B
&
9
a
&
8
8
8 _
[阵已保存到孔町mat v
i_xl
a
9
8
4、广度优先搜索的测试结果:
「建立图的邻2
盧立图的勺遷
尿
5 •退出v
阵
o
o o
表矩图
图
亠克更
请输入你的选择;3
图朗广度优先遍历序列;
1 5 20 6 4
2
3 I? 7 1
4 9 12 13
5、深度优先搜索的测试结果:
8
»
U
9
a
a
a
B
1
1
9
a
8
0 3 -
txt
0 a
0 0
0 a
中!
*HC
iHf