算法与数据结构课程设计报告精选.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法与数据结构课程设计报告精选

算法与数据结构 课程设计报告 题目:拓扑排序 院 (系): 专 业: 班 级: 学 生: 学 号: 指导教师: 2010年 12 月 1. 问题描述 图不同于线性结构,也不同于树形结构,图包含若干个顶点,且其中任何两个顶点都可能存在邻接关系,这种关系用边或弧表示,图在存储结构主要有两种:邻接矩阵和邻接表,进行拓扑排序的方法如下: 1) 在图中选一个没有直接前驱(入度为0)的顶点, 并把该顶点输出,令 n 为顶点个数; 2) 从图中删去该顶点, 同时删去所有它发出的有向边; 3) 重复以上(1)、(2)步, 直到全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;若图中还有未输出的顶点,但已跳出处理循环。这说明图中还剩下一些顶点,它们都有直接前驱,再也找不到没有前驱的顶点了,这时AOV网络中必定存在有向环。 2. 算法设计 一、拓扑排序设计思想 在拓扑排序的过程之中,输入入度为零(即没有前趋)的顶点,同时将该顶点的直接后继的入度减1。 (1)、查邻接矩阵中入度为零的顶点,并进栈。 (2)、当栈为空时,进行拓扑排序。 (a)、退栈,输出栈顶元素V。 (b)、在邻接矩阵中查找Vj的直接后继Vk,将Vk的入度减1,并令入度减至零的顶点进栈。 (3)、若栈空时输出的顶点数不是N个则说明有向回路,否则拓扑排序结束。 二、拓扑排序采用的数据结构 设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵: ????? 编译环境 生成文件 Windows XP MyEclipse 7.0 Node.java TopologySort.java TestTopology.java Windows Vista Microsoft Visio TopologySort.vsd 二、流程图 三、源程序清单 1. Node.java package com.xatu.topologySort; /** * * @author * */ public class Node { public String label; public boolean wasvisited; public Node(String label) { this.label = label; this.wasvisited = false; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public boolean isWasvisited() { return wasvisited; } public void setWasvisited(boolean wasvisited) { this.wasvisited = wasvisited; } } 2. TopologySort.java package com.xatu.topologySort; import java.util.Scanner; /** * 用邻接矩阵实现拓扑排序算法 * * @author * */ public class TopologySort { private int nodeNum = 0; private Node[] NodeList; // 图中的所有顶点 private int[][] adjmat; // 邻接矩阵 private int[] indegree;// 每个顶点入度的数组 private int[] outdegree;// 每个顶点出度的数组 private int nVerts; // 实际顶点数 private String sortedArray[]; // 拓扑排序用 public int getNodeNum() { return nodeNum; } public void setNodeNum(int nodeNum) { this.nodeNum = nodeNum; } public Node[] getNodeList() { return NodeList; } public void setNodeList(Node[] nodeList) { NodeList = nodeList; } publ

文档评论(0)

feixiang2017 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档