- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图的ADT实验报告
哈尔滨工业大学计算机科学与技术学院
实验报告
课程名称: 数据结构与算法
课程类型:必修
实验项目名称:图的ADT及其简单应用
实验题目:实现图的ADT,提高编程能力
班级:1103103
学号:1110310320
姓名:安尊文
设计成绩 报告成绩 指导老师
实验目的
采用C++类模版实现图的ADT,并简单应用。
实验要求及实验环境
CodeBlocks10.05 、 VC6 、 NetBeans IDE 6.9.1 皆可。
但最好是CodeBlocks10.05,下面结果在CodeBlocks10.05上测试成功。三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)
逻辑设计
2.物理设计
求广度优先时候使用了队列结构。
四、测试结果
1.连通图的深度优先与广度优先收索实验结果测试:
输入:如下数据
5 6
a b c d e
1 2 1
1 4 1
2 3 1
3 4 1
3 5 1
2 5 1
则有邻接表:
运行结果如下:
显然运行结果正确!
2.非连通图的先深先广收索:
输入如下数据:
9 8
a b d c e f g h i
1 2 1
1 3 1
2 4 1
2 5 1
3 6 1
7 8 1
7 9 1
8 9 1
运行结果如下,显然正确!
3. 最小生成树的验证:
6 5
1
5 5
3 6 4 2
6
1
5
3 4 2
输入数据:
6 10
a b c d e f
1 2 6
1 3 1
1 4 5
2 3 5
2 5 3
3 5 6
3 6 4
3 4 5
5 6 6
4 6 2
打印最小生成树的边时运行的理论结果应该为:
(3,1)(6,3)(4,6)(2,3)(5,2)
运行结果为:
显然正确!
五、系统不足与经验体会
时间紧张,有的操作如插入顶点、插入边还没写,但是相信还是比较简单的,能够实现。
该程序的亮点之处在于创建图时创建了邻接矩阵,为后面的最小生成树实现提够了简单的方法。
不足之处还多,比如人工输入比较麻烦,应该改进,而且尽量少使用cin、cout之类的,应该使用迭代器实现。
六、附录:源代码(带注释)
graph.h定义:
graph.h
#ifndef GRAPH_H_INCLUDED
#define GRAPH_H_INCLUDED
#define maxsize 100
typedef int weight;
typedef char VerData;
/*
边表,包括邻接点域、链域、权重等。
*/
typedef struct enode
{
int adjvex;/*----邻接点域----*/
enode * next;/*----链域----*/
weight w;/*----权重----*/
enode():adjvex(0),next(NULL),w(NULL){}/*----构造函数----*/
}EdgeNode;
typedef struct
{
VerData data;/*----数据域----*/
EdgeNode *firstedge;/*----第一条边----*/
} vertexnode;
typedef struct
{
vertexnode vex[maxsize];/*----顶点表数组----*/
int n;/*----顶点数----*/
int e;/*----边数----*/
}G;
template typename T
class graph
{
private :
int num_of_edge;
int num_of_vertexnode;
weight cost[maxsize+1][m
文档评论(0)