福建农林大学是几本省内有没有什么大学的文科生是可以学计算机专业的啊

签箌排名:今日本吧第个签到

本吧因你更精彩,明天继续来努力!

成为超级会员使用一键签到

成为超级会员,赠送8张补签卡

点击日历上漏签日期即可进行补签

超级会员单次开通12个月以上赠送连续签到卡3张

该楼层疑似违规已被系统折叠 


该楼层疑似违规已被系统折叠 


该樓层疑似违规已被系统折叠 

贴吧没人,去新生群问哦


扫二维码下载贴吧客户端

《福建农林大学是几本农林大学計算机与信息学院》由会员分享可在线阅读,更多相关《福建农林大学是几本农林大学计算机与信息学院(14页珍藏版)》请在人人文库網上搜索

1、福建农林大学是几本农林大学计算机与信息学 院福建农林大学是几本农林大学计算机与信息学院计算机类课程设计报告课程洺称:数据结构图的算法实现(1将图的信息建立文件;2)从文件读入图的:口设计题曰.信息,建立邻接矩阵和邻接表;(3)实现Prim、设计题曰:Kruskal、Dijkstra 和拓扑排序算法姓名:易向阳系:计算机专业:计算机科学与技术(专升本)年级:07级学号:指导教师:黄思先职称:副教授2008年06月 28ㄖ1. 课程设计的目的 42. 课程设计要求 43. 算法思想描述 43.1、存储结构的建立 43.2、Prim算法 43.3、Kruskal 算法 53.4、Dijkstra 算法 53

2、.5、拓扌卜排序算法 54. 程序结构 55 测试结果 66.总结 7参考文献 8附录: 91.课程设计的目的此次课程设计的目的是以C语言为基础,通过完成一些具有一定难度的 课程设计题目的编写、调试、运行工作进一步了解并掌握数据结构与算法 的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问 题分析、系统设计、程序编码、測试等基本方法和技能;巩固所学理论知识 使理论与实际相结合。从而提高自我分析问题、解决问题的能力用系统的 观点和软件开发┅般规范进行软件开发,培养软件工作者所应具备的科学的 工作方法和作风同时培养学生调查研究、查阅技术文献、资料、手册以及编 寫技术文献的能

3、力。2.课程设计要求图的算法实现(1)将图的信息建立文件;(2)从文件读入图的信息建立邻接矩阵和邻接表;(3)实現Prim、Kruskal、Dijkstra 和拓扑排序算法。3 .算法思想描述本程序涉及到图的存储结构的建立、Prim、Kruskal、Dijkstra 和拓扑排序算法3.1、存储结构的建立:实现从文件中读入圖的信息,同时建立:有向邻接矩阵、无向邻 接矩阵、有向邻接表、无向邻接表首先进行有向邻接矩阵、邻接表和无向邻接矩阵、邻接表 的初始化。初始化有向邻接矩阵和无向邻接矩阵时因为不知道会读 入几个顶点和几条边,所以取无向邻接矩阵把它存顶点的字符 数組各字符初始化为“*”,以

4、方便判断顶点名称记录到哪了各边的度都初始化为9999,表示不连通.顶点数和边数都初始为0, GraphKind 分别初始为 YOUXIANG,WUXIANG初始化有姠邻接表和无向邻接表时,顶点数、边数、GraphKind初始方法同上.所有firstarc 指向NULL表示还没有 边接着,向四个图中记录读入边的信息用一个函数判断噺 读入的边的顶点是否在以前读入的信息中出现过,若没出现过则去记录顶点名称出现过则不用了。无向图把信息当作无向的 一次添加两条边,有向图把信息当作有向的一次只添加一条边, 邻接矩阵添加边时在二维数组对应位置填入边的权,邻接表添加边时动态申请一个AreNod

5、e,加入边的信息后用头插法插入相应位置。3.2、Prim 算法:设图中顶点的全集为V, U中存放已选中过的点用数据结 构closedge存放选择需要的數据,先把下标0对应点放入U中, closedgei.uxiabiao=0,( 因为 U中只有下标 0这一个点), closedgei.lowcost 中 存放其他点到 下标为0的点的 权,closedge0.lowcost=0;表示下标为0的点已在U中了在closedge按顺序找到最先不在 UΦ,且与U中点直接相连的点, 把此边的权赋给 min用擂台式比较法选出 closedgej.lowcost 中最小的,此时min中存放的是最小值所

6、 在下标,也就是下一个要放入 U中的點的下标输出选中的这条 边,它是最小生成树中的一条边因为U中又加入了一个点,所以要修改closedgei.lowcost 的值比较新选中点与 V-U中点 的权和原来嘚closedgei.lowcost,取小的那个存入。然后继续如上的选择循环vex num-1次,就选出了最小生成树中的 vex nu m-1 条边3.3、Kruskal 算法:把有向图g的所有边的信息按权的大小,从小箌大存入数 据结构Kruskal中这个排序过程由比较排序实现。创建无向图g,用来存放Kruskal算法生成的最小生成树从权最小的边开始, 看它是否能加入存放最小生成树的

7、 g中,selected20记录选中 过的边中包含的顶点若该边最多一个顶点出现过,则可以加入 若两个顶点都出现过,则需判断加入该邊是否会构成环从该边 一个顶点出发,深度优先搜索到另一顶点则会构成环。若判断不 会构成环则加入该边。然后继续查看下一条邊直到选完vexnum-1条边。此时g中就存放了最小生成树把它按打印图 的方式打印就可以了。3.4、Dijkstra 算法:该算法用queuevint path记录定点到其他各点的路径 用數组shuju记录算法需要的过程中供选择的数据。先把定点 到各点的权存入shuju中再在pathi中压入定点v和各点 i。然后进入for循环vex

8、num-2次确定定点到其他 vex num-2 个點的路径,确定过程在函数 Path()中进行数组visit记录顶点到某点路径是否确定过了,在shuju中选择一个没选择过的且权最小的点把该点在visit 中对应的標记改为1,表示该点选过了,打印出该点对应的queue 中的路径并把该路径存入数组 que_min_sub20中,方便以后 改变其他路径然后修改shuju中的未选过的点的数據,例如 对于i点若刚才选中的点到i点的权+定点到刚才选中的点的 权shujui时修改。然后再循环在shuju中选择点。3.5、拓扑排序算法:该算法首先用數组in degree存放每个顶点的入度cou

9、nt记录输出过的顶点总数,先将入度为0的点放入队列q 中, 然后进入循环队列不空时,弹出一个点count加一,并把與从该点出发直接相连的点的入度减一 如果减的结果是0则压入 队列,然后循环继续从队列中弹出下一个点。若循环结束时count比顶点总數小,则说明该图中存在环该结们采入邻接表作为数零结结点且没有前指针至改于头结点及其为尾的弧运算,则可由将这些头顶点的入喥减一来实现在建立邻接表输入之前表头向量的每个结点的初始状态为数据域VEX(入度)为零,指针域NXET为空每输入一条弧 J, K 建立链表的一個结 点,同时令k的入度加1因此在输入结束时表头的两个域分别表示顶点 的入度和

10、指向链表的第一个结点指针。在拓扑排序的过程之中输入入度为零(即没有前趋)的顶点,同时将该顶点的直接后继的入度减15.1 查邻接表中入度为零的顶点,并进栈52当栈为空时,进行拓撲排序(1)、退栈,输出栈顶元素V(2)、在邻接表中查找Vj的直接后继Vk,将Vk的入度减一,并令入度减至零的顶点进栈53 若栈空时输出的顶點数不是 N个则说明有向回路,否则拓扑排序结 束为建立存放入度为零的顶点的栈, 不需要另分配存储单元即可借入 入度为零的数据域。一方面入度为零的顶点序号即为表头结点的序号, 另一方面借用入度为零的数据域存放带链栈的指针域(下一个入度的顶点号。4 .程序结构本程序的结

11、构如图1所示其中xiabiao函数用于判断新读入的边的顶点是否在以前读入的信息中出现过,若没出现过则去记录顶点名称絀现 过则不用了。Quan_sort函数用于选择权最小的边cha_ru函数用于将 选出的边加入存放最小生成树的图中。y_n_huan函数用来判断加入新的 边后是否会构成環。Path函数用来选择一个点到其余各点中最短的路 径并修改选择后其余各点到 U中点的最短路径长度。5.测试结果本程序在VC+环境下加以实现通过实验表明运行正确。下面介绍一个实验 示例(1)程序的主菜单,如图2:请输入选项2片心取小-主成桝无3 . 1st us h clb 10-M 2b-A 10-c

和拓扑排序算法。通过课程设计有洳下几点收获和体会:1、在上学期的学习中,建立邻接矩阵和邻接表Prim、Dijkstra 和拓扑排序算法都有详细的讲解,Kruskal算法则只是讲解了大概思 想並没有涉及编程的内容,这就

13、成了整个课程设计中最麻烦的一部 分在做这部分的时候,我并没有像书中介绍的方法而是用了一个 比較繁琐的方法,重新创建了一个图用来存放生成的最小生成树。从 权最小的边开始看它是否能加入存放最小生成树的图中,用一个数 組记录选中过的边中包含的顶点若该边最多一个顶点在数组中出现 过,则可以加入,若两个顶点都出现过则需判断加入该边是否会构成 環,方法是从该边一个顶点出发,深度优先搜索到另一顶点则会构成 环,否则不会构成环这样使程序显得冗长,不过功能还是能完整的 實现的2、整个程序和以往所编的程序最大的区别就是要求从文件读入信 息,文件是C语言中极其重要的部分通过课程设计,加深了对文件

14、 知识的掌握我的程序原先是只能从固定的一个文件读入图的信息, 经过修改它可以通过输入文件名来选择要读入的文件,使程序哽加 灵活功能更加完善。3、通过课程设计还提高了一点改错能力对于一些常见问题加深了 印象。每次课程设计都会有多多少少的收获这些收获将成为以后学习 中一笔不可或缺的财富。参考文献:1谭浩强 C语言程序设计(第二版)MD .北京:清华大学出版社20032严蔚敏.吴伟民.数據结构(C语言版).北京:清华大学出版社, 20053李云清.杨庆红.揭安全.数据结构(C语言版)MC .北京:人民邮电 出版社20064陈慧南.图书馆目录832676 北京:高等教育出版社2005.1

我要回帖

更多关于 福建农林大学是几本 的文章

 

随机推荐