最小生成树问题。
哈希表设计。
学院:信息科学与工程学院。
班级:统计学2011
最小生成树问题。
一、需求分析。
1.问题描述:
在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。
2.基本功能。
在n个城市之间建设网络,只需要架设n-1条线路,建立最小生成树即可实现最经济的架设方法。
程序可利用克鲁斯卡尔算法或prim算法生成最小生成树。
3.输入输出。
以文本形式输出最小生成树,同时输出它们的权值。通过人机对话方式即用户通过自行选择命令来输入数据和生成相应的数据结果。
二、 概要设计。
1.设计思路:
因为是最小生成树问题,所以采用了课本上介绍过的克鲁斯卡尔算法和。
prim算法两种方法来生成最小生成树。根据要求,需采用多种存储结构,所。
以我选择采用了邻接表和邻接矩阵两种存储结构。
2.数据结构设计:
图状结构:adt graph
vr=基本操作:
creategraph( &g, v, vr )
初始条件:v是图的顶点集,vr是图中弧的集合。
操作结果:按v和vr的定义构造图g。
destroygraph( &g )
初始条件:图g存在。
操作结果:销毁图g。
locatevex( g, u )
初始条件:图g存在,u和g中顶点有相同特征。
操作结果:若g中存在顶点u,则返回该顶点在图中位置;否则返。
回其它信息。
getvex( g, v )
初始条件:图g存在,v是g中某个顶点。
操作结果:返回v的值。
putvex( &g, v, value )
初始条件:图g存在,v是g中某个顶点。
操作结果:对v赋值value。
firstadjvex( g, v )
初始条件:图g存在,v是g中某个顶点。
操作结果:返回v的第一个邻接顶点。若顶点在g中没有邻接顶点,则返回“空”。
nextadjvex( g, v, w )
初始条件:图g存在,v是g中某个顶点,w是v的邻接顶点。
操作结果:返回v的(相对于w的)下一个邻接顶点。若w是v的。
最后一个邻接点,则返回“空”。
insertvex( &g, v )
初始条件:图g存在,v和图中顶点有相同特征。
操作结果:在图g中增添新顶点v。
deletevex( &g, v )
初始条件:图g存在,v是g中某个顶点。
操作结果:删除g中顶点v及其相关的弧。
insertarc( &g, v, w )
初始条件:图g存在,v和w是g中两个顶点。
操作结果:在g中增添弧,若g是无向的,则还增添对称弧。
deletearc( &g, v, w )
初始条件:图g存在,v和w是g中两个顶点。
操作结果:在g中删除弧,若g是无向的,则还删除对称弧。
dfstr**erse( g, visit()
初始条件:图g存在,visit是顶点的应用函数。
操作结果:对图进行深度优先遍历。在遍历过程中对每个顶点调用。
函数visit一次且仅一次。一旦visit()失败,则操作失败。
bfstr**erse( g, visit()
初始条件:图g存在,visit是顶点的应用函数。
操作结果:对图进行广度优先遍历。在遍历过程中对每个顶点调用。
函数visit一次且仅一次。一旦visit()失败,则操作失败。
adt graph
存储结构:邻接矩阵:
#define infinity int_max//最大值无穷。
#define max_vertex_num 20//最大顶点个数。
typedef enum graphkind;
typedef struct arccell0= 基本操作:
void createhashlist(void);
操作结果:创建一个哈希表。
bool islegal(string&s);
前置条件:s是非空字符串。
后置条件:s合法字符串返回true,否则返回false
void show(bool lhs)const;
前置条件:lhs被初始化。
后置条件:lhs为真打印查找成功,否则打印查找失败。
void findname(string&s);
前置条件:哈希表已经建立,s非空。
后置条件:查找所输入的人名在不在哈希表中。
int getnumber(string&s)
前置条件:s被初始化。
后置条件:返回s索引的值。
bool isfull(int i)const
前置条件:变量i被初始化并且i不超过哈希表的长度。
后置条件:第i行的链表满了返回true,否则返回false
bool isexistence(int i,string&s)
前置条件:参数被初始化。
后置条件:s存在返回true,否则返回false
2.2 主程序。
void main()
while("命令"!=退出");
2.3本程序的模块只有两个模块:主程序模块和哈希表模块,调用关系为:主程序模块调用哈希表模块。
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...