图的算法实现课程设计

发布 2022-10-01 22:22:28 阅读 6535

数据结构与算法。

课程设计报告。

课程设计题目: 图的算法实现。

专业班级: 信息与计算科学1001班。

姓名: 学号。

设计室号: 理学院机房。

设计时间: 2011-12-26 批阅时间。

指导教师: 成绩。

图的算法实现。

目录。一.设计内容。

二.功能设计流程。

三.详细设计。

四.调试。五.总结。

六.参考文献。

七.附录源**。

一、设计内容:

1.实验内容。

图的算法实现。

1)将图的信息建立文件;

2)从文件读入图的信息,建立邻接矩阵和邻接表;

3)实现prim、kruskal、dijkstra序算法。

2.实现的任务:从文件中读入图的信息,建立图的邻接矩阵和邻接表,实现prim、kruskal、dijkstra

3.本系统涉及的知识点。

prim、kruskal、dijkstra、邻接矩阵和邻接表存储。

4.功能要求。

1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。

2.对系统进行功能模块分析、画出总流程图和各模块流程图。

3.用户接口要求使用方便、简洁明了、美观大方、格式统一。

4.通过命令行相应选项能直接进入某个相应菜单选项的功能模块。

5.所有程序需调试通过。

二、功能设计流程:

用prim算法的程序流程图。

2、程序无向图相关算法的基本功能。

本部分程序可以对图的相关信息:顶点、边以及顶点与边的指向关系建立无向图的邻接矩阵和邻接表。

三。详细设计。

1.文件保存函数模块(void getin_1())

void getin_1()/文件保存函数。

int a,b,k,w,z;file *fp;

if((fp=fopen("record_",w"))null打开文件,并判断打开是否正常*/

printf("请输入顶点数:");

scanf("%d",&

fprintf(fp,"%d",

printf("请输入边数:");

scanf("%d",&

fprintf(fp,"%d",初始化矩阵各元素值//读入边。

printf("请输入顶点信息:");顶点的信息会出现在矩阵边界上。

fflush(stdin);/清空缓冲。

for (z=0;z<

fclose(fp);

建立一个名为record_的文件保存数据,保存的数据包括顶点的个数、边的条数、顶点与边之间的关系。

2.文件载入模块(int getout_1())

void getout_1()/文件载入函数。

int i,a,b,w;

file *fp;

if((fp=fopen("record_",ab+")null)

fscanf(fp,"%d",&

fscanf(fp,"%d",&

for(i=0;i<

for (i=0;i<

根据文件中保存的数据,从指定文件中按格式输入数据,并根据输入图的相关信息建立对应的无向图邻接矩阵。

3.邻接矩阵输出函数(void outmatrix();

void outmatrix()/邻接矩阵输出函数。

int i,m,z;

printf("所建立表的邻接矩阵为:");

printf("\t");

for(i=0;i<

printf("%c\t",for(m=0;m<

将根据相关信息建立的邻接矩阵打印出显示在屏幕上。

4.prim算法函数(void minispantree_prim(char u)))

void minispantree_prim(char u)

int i,j,k;

minside closedge[9999];

k=locatevex(u);

for(j=0;j< /辅助数组初始化。

printf("用prim算法生成的最小生成树为:");

for(i=1;i《选择其余个顶点。

k=minimum(closedge求出t的下一个结点:第k顶点

printf("(c-%c)",closedge[k].adjvex,输出生成树的边

closedge[k].lowcost=0第k顶点并入u集

for(j=0;j<

if( &closedge[j].adjvex=

closedge[j].lowcost=

5.迪杰斯特拉算法函数(void dijkstra(int v))

void dijkstra(int v)

int dist[n],path[n];

int s[n];

int mindis,i,j,u;

for(i=0;i<

for(i=0;i<

s[v]=1;

path[v]=0;

for(i=0;i<

s[u]=1;

for(j=0;j<

dispath(dist,path,s,6. 克鲁斯卡尔(void kruskal(edgetype edges,int n) )

void kruskal(edgetype edges,int n)

int front[100];

int i,vf1,vf2;

printf("用kruskal算法生成的最小生成树为:");

for(i=0;i front[i]=0;

for(i=0;i {

vf1=search(front,edges[i].w1);

vf2=search(front,edges[i].w2);

DES算法实现 课程设计

通达学院课程设计 报告。2016 2017学年第 1 学期 题目 des算法实现。专业计算机科学与技术 信息安全 学生姓名。班级学号。指导教 通达学院课程设计 报告。2016 2017学年第 1 学期 题目 des算法实现。专业计算机科学与技术 信息安全 学生姓名。班级学号。指导教师王波。指导单位计...

算法课程设计

目录。1 问题描述第1页。2 算法分析第2页。3 伪 第5页。4 设计流程第6页。5 演示程序设计第8页。6 测试与结论第16页。7 设计过程遇到的问题 思考及解决方法 第17页。八 总结第17页。1 问题描述。八皇后问题是一个古老而著名的问题,它是回溯算法的典型例题。该问题是十九世纪德国著名数学家...

算法课程设计

当一个问题具有最优子结构性质时,根据其具体情况可以用动态规划算法或者贪心算法来求解。但当问题同时具有贪心选择性质时,贪心算法则通常会给出一个更简单 直观和高效的解法。贪心算法则通常会给出一个更简单 直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解,并且每次贪心选择都能将问题化简为一个更小...