PAGE

JIN

JINGCHU UNIVERSITY OF TECHNOLOGY

《数据结构(C语言描述)》

课程设计

学 院 计算机工程学院

班 级 12级软件技术1班

学 号 2012304040122、120

124、133、121

2014年 1月3日

目 录

TOC \o "1-3" \h \z \u 1 课程设计介绍 1

1.1 课程设计内容 1

1.2 课程设计要求 1

2 课程设计原理 2

2.1 课设题目粗略分析 2

2.2 原理图介绍 3

2.2.1 功能模块图 3

2.2.2 流程图分析 3

3 数据结构分析 10

3.1 存储结构 10

3.2 算法描述 12

4 调试与分析22

4.1 调试过程22

4.2程序执行过程22

参考文献28

附 录28

第 PAGE 3 页 共 29页

1 课程设计介绍

1.1 课程设计内容

编写算法能够建立带权图,并能够用Prim算法求该图的最小生成树。最小生成树能够选择图上的任意一点做根结点。最小生成树输出采用顶点集合和边的集合的形式。

1.2 课程设计要求

可以输入顶点、边数及各路径的权值;

通过建立无向图或有向图能过输出邻接矩阵或邻接表;

可以输出建立的最小生成树;

画出流程图,且函数有必要说明、注释;

课设完成后上交报告及核心代码。

2 课程设计原理

2.1 课设题目粗略分析

根据课设题目要求,拟将整体程序分为两大模块。以下是两个模块的大体分析:

创建网图并确定网图的存储形式,通过对题目要求的具体分析。发现该题的主要操作是路径的输出,因此采用邻接表和邻接矩阵(起点、终点和权值)两种存储结构,方便以后的编程。

2.Prim算法。设置两个新的集合U和T,其中U用于存放带权图G的最小生成树的结点的集合,T用于存放带权图G的最小生成树边的权值的集合。其思想是:令集合U的初值为U{u0}(即假设构造最小生成树时从结点u0开始),集合T?的初值为T={}。从所有结点u属于U和结点v属于V但不属于U的带权边中选出具有最小权值的边(u,v),将结点v加入集合U中,将边(u,v)加入集合T中。如此不断重复,当U=V时,最小生成树便构造完毕。

2.2 原理图介绍

2.2.1 功能模块图

显示菜单进行选择选择创建(有)无向图及存储方式有向图邻接矩阵无向图邻接矩阵有向图邻接表

显示菜单进行选择

选择创建(有)无向图及存储方式

有向图邻接矩阵

无向图邻接矩阵

有向图邻接表

无向图邻接表

调用普里姆算法输出最小生成树

结束

开始

2.2.2 流程图分析

主函数

开始

开始

显示菜单,选择输入1或2

选择1

选择2

调用createAgraph()函数

结束

选择1

调用CreateGraph()函数

选择2

调用CreateMGraph()函数

调用createALgraph()函数

调用Prim函数,输出最小生成树

图2.2 主函数流程图

2. CreateMGraph()函数

开始

开始

int i,j,k

for(i=0;in;i++)

scanf(“\n%c”,&(G->vexs[i]));

for(i=0;in;i++)

for(j=0;in;i++)

i=j

G->edges[i][j]=0;

Y

N

G->edges[i][j]=max;

for (k=0;ke;k++)

scanf("\n%d,%d,%d",&i,&j,&weight);

G->edges[i][j]=weight;

OutPut(G);

prim(G->edges,G->n,G->vexs);

结束

结束

图2.3 CreateMGraph()函数流程图

3.Prim()函数

开始

开始

int i,j,k,lowcost[100],mincost;

for(i=1;i

{ lowcost[i]=gm[0][i];

closevertex[i]=0; }

set[i]=0;

i=1;

j=1;

Y

Y

lowcost[0]=0;

closevertex[0]=0;

for(i=1;i

mincost=max;

j=1;

k=1;

j

lowcost[j]

mi

最小生成树普里姆算法c语言代码,普里姆算法生成最小生成树-C语言描述.doc相关推荐

  1. 约瑟夫双向生死游戏c语言代码,约瑟夫生死游戏(含源代码可以运行)本科毕业设计.doc...

    约瑟夫生死游戏(含源代码可以运行)本科毕业设计 湖南商学院 数据结构与算法 课程设计 题 目约瑟夫双向生死游戏学生姓名梁子嫣学 号140920043学 院计算机工程与信息学院专业班级计科1402指导教 ...

  2. 将如下c语言代码汇编成s文件,gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...

  3. 圆的Bresenham算法C语言代码,圆的Bresenham算法的opengL实现

    源代码实现如下: // Bresenham_circile.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include #includ ...

  4. 灰狼算法 c语言 代码,GWO灰狼优化算法

    1.算法原理 灰狼属于犬科动物,被认为是顶级的掠食者,它们处于生物圈食物链的顶端.灰狼大多喜欢群居,每个群体中平均有5-12只狼.特别令人感兴趣的是,它们具有非常严格的社会等级层次制度,如图1,金字塔 ...

  5. 距离矢量路由算法的java代码_八大排序算法比较(附Java代码)

    冒泡排序 /*** 冒泡排序 比较好理解* 两两相比 较大的放后面* 时间复杂度O(n^2)*//*** 改进前的冒泡排序算法进行100,000数据排序运行时间为:3829ms* 优化后的冒泡排序算法 ...

  6. c语言代码re通常什么错误,求帮助 C语言realloc和free触发断点的问题

    LZ目前自学C语言  在写小程序的时候遇到一些问题  请各位大神赐教一下 非常感谢 关联问题1:realloc触发断点问题 描述:LZ想要通过realloc实现动态数组 结果发现程序运行在reallo ...

  7. c语言代码查错软件,Ubuntu下面的C语言代码检查工具 Splint

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 看一下下面的代码(当然包括错误,以检验splint的功能): #include int main(int argc,char* argv[]){ int  ...

  8. 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案

    理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...

  9. P1P2P3口接24个灯流水的c语言代码,第三章单片机并行口c语言程序设计.ppt

    第三章单片机并行口c语言程序设计 3.1 80C51的并行口结构与应用 3.1.1 P0口.P2口的结构 1.P0口作通用的I/O口使用. 这时,CPU发来的"控制"信号为低电平, ...

最新文章

  1. apkplug插件托管服务简化与简介-05
  2. 2020德勤面试开始了吗_2020公务员面试公告已出,5月28日开始面试
  3. SpringBoot集成Spring Security(一)登录注销
  4. HTML+CSS+JS实现 ❤️ 粒子倒计时特效❤️
  5. 朴素贝叶斯与贝叶斯网络
  6. 新 CEO 谈论GitHub 被微软接管后的未来
  7. 通过postman向OpenTSDB插入数据并查询
  8. python 3 导入 迭代判断
  9. Serilog输出日志到mysql_ASP.NET Core利用Docker ElasticSearch Kibana来记录日志
  10. 离散分布的分布函数_条件分布与条件期望
  11. android 指纹识别 怎么使用方法,android实现指纹识别
  12. 0xc000007b 解决办法-取出系统盘(机械硬盘或者固态硬盘),删除bootsafe64.sys和衍生文件kavbootc.sys
  13. Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制
  14. HTTP和HTTPS协议,看一篇就够了
  15. CBitmap Detach和DeleteObject的关系
  16. oracle 11g open_cursors 修改,修改open_cursors和session_cached_cursors的参数值
  17. 关于Spire.PDF for .NET
  18. SQL Server 如何比较日期的大小
  19. 淘宝海报常见的英文字体精选,让你的设计更显逼格!
  20. Windows10 系统下cuda安装教程,小白教程 !很详细!!

热门文章

  1. #千锋逆战班,Cq# 在千锋“逆战”学习第 20天,今天学了内部类的四种书写格式
  2. 数据库中字段是什么意思?
  3. QoS 服务质量等级
  4. IDEA中文乱码以及运行Tomcat各种出现乱码具体解决方案
  5. 玩转基因组浏览器之自定义IGV的参考基因组
  6. python操作mysql插入数据
  7. 软件评测师-软件质量
  8. 岁月划过生命线(大二.上)
  9. OPENMPI并行库安装
  10. 烽火通信张宾:智慧光网,开创工业互联网新时代