数据结构与算法。
课程设计报告。
课程设计题目: 图的算法实现。
专业班级: 信息与计算科学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 问题描述。八皇后问题是一个古老而著名的问题,它是回溯算法的典型例题。该问题是十九世纪德国著名数学家...
算法课程设计
当一个问题具有最优子结构性质时,根据其具体情况可以用动态规划算法或者贪心算法来求解。但当问题同时具有贪心选择性质时,贪心算法则通常会给出一个更简单 直观和高效的解法。贪心算法则通常会给出一个更简单 直观和高效的解法。贪心算法通过一系列的选择来得到一个问题的解,并且每次贪心选择都能将问题化简为一个更小...