数据结构与算法课程设计报告-图的算法实现.doc

数据结构与算法课程设计报告-图的算法实现.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法 课程设计报告 课程设计题目: 图的算法实现 专业班级: 信息与计算科学1001班 姓 名: 学 号: 设计室号: 理学院机房 设计时间: 2011-12- 指导教师: 成 绩: 课题:图的算法实现 任务要求: (1)将图的信息建立文件; (2)从文件读入图的信息,建立邻接矩阵和邻接表; (3)实现Prim、Kruskal、Dijkstra序算法 功能、算法、体会描述: 系统主要功能是实现图的算法,主界面选着建立保存图的信息,可以用普利姆,克鲁斯卡尔和狄克斯特拉三种算法分别实现。 1·建立图的邻接矩阵 基本思想:输入顶点和边数,输入顶点信息,算出邻接矩阵 程序模块: typedef struct { char vexs[N]; int edges[N][N]; int n,e; //顶点数和边数 }MGraph;MGraph g; typedef struct { char adjvex; int lowcost; }minside; // 若G中存在顶点u,则返回该顶点在图中位置;否则返回-1。 int LocateVex(char u) { int i; for(i = 0; i g.n; ++i) if( u==g.vexs[i]) return i; else return -1; } // 求closedge.lowcost的最小正值 int minimum(minside SZ[]) { int i=0,j,k,min; while(SZ[i].lowcost==0) i++; min=SZ[i].lowcost; //第一个不为0的值 k=i; for(j=i+1;jg.n;j++) if(SZ[j].lowcost0) if(minSZ[j].lowcost) { min=SZ[j].lowcost; k=j; } return k; } 用outmatrix()函数输出邻接矩阵,getin_1()函数保存文件和对文件进行载入。 程序模块: void outmatrix()//邻接矩阵输出函数 { int i,m,z; printf(所建立表的邻接矩阵为:\n); printf(\t); for(i=0;ig.n;i++) printf(%c\t,g.vexs[i]); for(m=0;mg.n;m++) { printf(\n%c\t,g.vexs[m]); for(z=0;zg.n;z++) printf(%d\t,g.edges[m][z]); } } void getin_1()// 文件保存函数 { int a,b,k,w,z;FILE *fp; if((fp=fopen(record_1.txt,w))==NULL) /*打开文件,并判断打开是否正常*/ { printf(不能打开文件\n); /*没打开*/ exit(0); } printf(请输入顶点数:\n); scanf(%d,g.n); fprintf(fp,%d\n,g.n); printf(请输入边数:\n); scanf(%d,g.e); fprintf(fp,%d\n,g.e);//初始化矩阵各元素值//读入边 printf(请输入顶点信息:\n);//顶点的信息会出现在矩阵边界上。 fflush(stdin);//清空缓冲 for (z=0;zg.n;z++) { scanf(%c,g.vexs[z]); fprintf(fp,%c\n,g.vexs[z]);} for(a=0;ag.n;a++) for(b=0;bg.n;b++) g.edges[a][b]=0; printf(\n);

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档