中南大学数据结构拓扑实验报告.docVIP

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

目录 一、问题描述……………………………3 二、基本要求……………………………3 三、数据结构的设计……………………3 四、软件模块结构图……………………4 五、程序流程图…………………………4 六、源程序………………………………5 七、调试分析……………………………12 八、测试数据……………………………13 九、用户使用手册………………………15 十、心得体会……………………………15 一、问题描述 拓扑排序问题 问题描述:采用适当的存储结构,实现有向网的存储,建立,输入,显示,以及实现对有向无环图的拓扑有序序列的输出。 二、基本要求 (1)熟练掌握图的基本存储方法; 熟练掌握图的深度优先和广度优先搜索方法; 掌握AOV; 掌握AOE。 有向图可以拓扑排序的条件是:图中没有环。 方法: 从图中选择一个入度为0的点加入拓扑序列。 从图中删除该结点以及它的所有出边(即与之相邻点入度减1)。反复执行这两个步骤,直到所有结点都已经进入拓扑序列。 五、程序流程图 按照流程图的具体分析如下: 图像输入:建立一个有向无环图,要考虑到输入的方式尽量方便全面,采用输入弧的方式,输入每条弧的链接的两个结点。 判断图是不是有向无环图:完成输入后,队列应该是满的。选取入度为零的结点,入队列,调整数组,循环进行。如果队列不满,则输入的图不符合要求,应该重新输入。 拓扑排序:现在所得的弧是有向无环,再循环出队列,按照队列固有的顺序进行输出即可,排序完成。 六、源程序 头文件: // jkl.h : PROJECT_NAME 应用程序的主头文件 // #pragma once #ifndef __AFXWIN_H__ #error 在包含此文件之前包含“stdafx.h”以生成 PCH 文件 #endif #include resource.h // 主符号 // CjklApp: // 有关此类的实现,请参阅 jkl.cpp // class CjklApp : public CWinApp { public: CjklApp(); // 重写 public: virtual BOOL InitInstance(); // 实现 DECLARE_MESSAGE_MAP() }; struct node { int adjvex; node * next; }; struct graph { int vexter; int in; node * firstedge; }; typedef struct { int *base; int *top; int stacksize; }sqstack; extern CjklApp theApp;// jklDlg.cpp : 实现文件 // #include stdafx.h #include jkl.h #include jklDlg.h #include malloc.h #include stdio.h #include WzdSplash.h #ifdef _DEBUG #define new DEBUG_NEW #endif graph inDegree[50]; // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 void initstack(sqstack S) { S.base=(int *)malloc(sizeof(int)); S.top=S.base; S.stacksize=50+1; } void createadlist(int tab[],graph inDegree[],int n,int e)//创建邻接链表 { int i,k,j; int M=0; node * q; for(i=1;i=n;i++) { inDegree[i].vexter=i; inDegree[i].in=0; inDegree[i].firstedge=NULL; } for(k=1;k=e;k++) { i=tab[M]; j=tab[++M]; printf(%d%d,i,j); M++; inDegree[j].in++; q=(node *)malloc(sizeof(struct node)); q-adjvex=j; q-next=inDegree[i].firstedge; inDegree[i].firstedge=q; } } bool TopoSort(graph inDegree[],int n,CString str) { int i,v,count=0; sqstack S; node * p; initstack(S); for(i=1;i=n;i++) if(inDegree[i].in==0) *S.top++=i;

文档评论(0)

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

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

1亿VIP精品文档

相关文档