网站大量收购闲置独家精品文档,联系QQ:2885784924

算法与数据结构课程设计报告书_--AOV网.docVIP

算法与数据结构课程设计报告书_--AOV网.doc

  1. 1、本文档共17页,可阅读全部内容。
  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文档。上传文档
查看更多
算法与数据结构        课程设计报告书     姓  名 ______  班  级 _______     学  号 _______     指导教师 _____ 问题描述: 设计程序完成如下功能:对给定的AOV网,求出该AOV网所有的拓扑序列。 设计的软、硬件环境: CPU 操作系统 Mircrosoft visual C++ ADT(数据结构与算法)设计与功能模块: 基于邻接表的存储结构 利用CreatGraph(ALGraph *G)函数,构建图-——邻接表; 用FindInDegree(ALGraph G,int indegree[]),求出入度为零的顶点,即为没有前驱的顶点,可以附设一个存放各顶点入度的数组Indegree[]; 找G中无前驱的顶点—查找indegree[i]为零的顶点vi; 删除以i为顶点的所有弧—对链在顶点i后面的所有邻接顶点k,对对应的indegree[k]减1; 利用TopologicalSort(ALGraph G)进行拓扑排序; 为了避免重复检测入度为零的顶点,再设置一个辅助栈,若某一顶点的入度为零,则将它入栈。每当输出某一入度为零的顶点时,便将它从栈中删除; 这里用到如下函数 void InitStack(SqStack *); int Pop(SqStack *, ElemType *); void Push(SqStack *,ElemType ); int StackEmpty(SqStack *); 程序输入与结果输出: 实验结果分析及收获: 首先输入了该图的顶点数和边数,假设顶点数和边数都为4,有V1,V2,V1,V3,V1,V4,V3,V4; 所以建立的邻接表为: 1 3 4 2 2 3 4 4 然后求出了各顶点的入度,即: 第1个顶点的入度为0; 第2个顶点的入度为1; 第3个顶点的入度为1; 第4个顶点的入度为2; 最后输出该拓扑序列的排列顺序:1 2 3 4 实验收获: 这次对AOV网进行拓扑排序的课程设计,让我明白了如何对一个有向无环图进行拓扑排序,以及拓扑排序的基本思想。在课程设计的过程中虽然也遇到了一些难题,但是通过看书,上网查相关资料,以及组员之间讨论,终于解决了相关问题,得出了实验结果。 附录(源程序清单) #includestdio.h #includestdlib.h #define MAX_VEXTEX_NUM 20 #define M 20 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OK 1 #define ERROR 0 typedef int ElemType; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; }ArcNode; typedef struct VNode { int data; ArcNode *firstarc; }VNode,AdjList[MAX_VEXTEX_NUM]; typedef struct { AdjList vertices; int vexnum, arcnum; }ALGraph; typedef struct //构件栈 { ElemType *base; ElemType *top; int stacksize; }SqStack; void InitStack(SqStack *); //函数声明 int Pop(SqStack *, ElemType *); void Push(SqStack *,ElemType ); int StackEmpty(SqStack *); void CreatGraph(ALGraph *); void FindInDegree(ALGraph , int * ); void TopologicalSort(ALGraph ); void InitStack(SqStack *S)//初始化栈i { S-base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S-base) { printf(memory allocation failed, goodbye); exit(1); } S-top=S-base; S-stacksize=STACK_INIT_SIZE; } int Pop(SqStack *S,ElemType *e)//出栈操作 { if(S-top==S-base) {return ERROR;} *e=*--S-top; //p

文档评论(0)

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

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

1亿VIP精品文档

相关文档