课 程 设 计 报 告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、问题描述 (2)

二、课程设计目的 (2)

三、概要设计 (2)

四、问题实现的主要算法与分析 (3)

五、数据信息 (3)

六、源程序 (4)

七、运行结果 (8)

八、课程设计的小结 (9)

九、参考文献 (10)

一、问题描述

1.若要在扬州大学的七个校区(广陵校区、盐阜校区、瘦西湖校区、农学院校区、工学院校区、水利学院校区、医学院校区)之间架设校园网,如何以最低的经济代价架设这个校园网。

2.利用二种方法(Prim算法和克鲁斯卡尔(Kruskual)算法生成校园网的架设方案

3.分别对每种方法选定一组测试数据进行测试,验证程序的正确性。

二、课程设计目的

课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。为今后学习其他计算机课程打下基础。

课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。

三、概要设计

1.Prim算法:

ADT Graph{

数据对象V:V是具有相同特性的数据元素的集合,成为顶点集。

数据关系R:

R={VR}

VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在路径}

基本操作P:

min(closedge,n);

初始条件:图G存在。

操作结果:求权值最小的弧尾顶点。

minspantree(u,n,closedge);

初始条件:图G存在。

操作结果:求图G的最小生成数。

}ADT Graph

2.Kruskal算法:

ADT MGraph{

数据对象V:V是具有相同特性的数据元素的集合,成为顶点集。

数据关系R:

R={VR}

VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在路径}

基本操作P:

sort(edges,G)

初始条件:图G存在。

操作结果:求按权值大小从小到大排序。

MinSpantree(G);

初始条件:图G存在。

操作结果:求图G的最小生成数。

Find(parent,f);

初始条件:parent是已经存在的集合,v是某个子集成员。

操作结果:查找函数。返回父亲结点。

}ADT MGraph

四、问题实现的主要算法与分析

1.Prim算法

(1)typedef struct{int adj,low;}edge:定义结构体edge,包含成员adj(顶点),low (权);

(2)int min(edge closedge[],int n):求权值最小的弧尾顶点;

(3)void minspantree(int u,int n,edge closedge[]):用Prim算法求最小生成树;(4)main():包括用文件打开方式调用数据创建一个图,并对其用Prim算法求最小生成树2.Kruskal算法

(1)typedef struct{int begin;

int end;

int weight;

}edge:定义结构体edge,包含成员begin(弧头),end(弧尾),weight(权值);

typedef struct{int adj;

int weight;

}AdjMatrix[MAX][MAX]:定义结构AdjMatrix[MAX][MAX],包含成员包含成员adj(顶点),weight(权值);

typedef struct{AdjMatrix arc;

int vexnum,arcnum;

}MGraph:定义结构体MGraph,包含成员AdjMatrix arc(AdjMatrix 型的成员),vexnum(顶点数),arcnum(边数);

(2)void sort(edge edges[],MGraph *G):对权值进行从小到大的排序;

(3)void MinSpanTree(MGraph *G):用Kruskal算法求最小生成树;

(4)int Find(int *parent,int f):找尾;

(5)void main():包括用文件打开方式调用数据创建一个图,并对其用Kruskal算法求最小生成树。

五、数据信息

1:广陵校区 2:盐阜校区

3:瘦西湖校区 4:农学院校区

5:工学院校区 6:水利学院校区

7:医学院校区;

1 2 11

1 3 20

1 4 12

1 5 10

1 6 11

1 7 15

2 3 10

2 4 1

2 5 1

2 6 2

2 7 4

3 4 9

3 5 11

3 6 12

3 7 12

4 5 2

4 6 3

4 7 3

5 6 1

5 7 5

6 7 6

六、源程序

Prim算法:

/* Note:Your choice is C IDE */

#include"stdio.h"

#define Max 200

typedef struct

{int adj,low;}edge;

int G[20][20];

int min(edge closedge[],int n)

{int i,t,l;

t=100;

for(i=1;i<=n;i++)

if((closedge[i].low)&&(closedge[i].low

}

相关文档
最新文档