付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、拓扑排序问题描述:若用有向网表示教学计划,其中顶点表示某门课程,有向边表示课程之间的先修关系(如果A课程是B课程的先修课程,那么A到B之间有一条有向边从A指向B)o试设计一个教学计划编制程序,获取一个不冲突的线性的课程教学流程。(课程线性排列,每门课上课时其先修课程已经被安排)。基本要求:(1)输入参数:课程总数,每门课的课程号(固定占3位的字母数字用)和直接先修课的课程号。(2)若根据输入条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。需求分析:(测试数据加强版)1、输入形式:第一行是是个整数t,表示有t组测试数据;每一组测试数据的第一行是一个整数n,表示结点数目接下来
2、的n行是n个顶点的信息接下来的一行是一个整数m,表示有向边的数目接下来是m行数据每一行是一条有向边的起止结点信息2、输出形式:如果可以实现拓扑排序,输出其得到的合法线性序列否则,输出InputError!;3、功能描述:帮助判断当前的课程是否可以安排得当;如果得当,输出一个合法的修读顺序;4、样例输入输出:输入:25MathEnglishPhysicsChineseMusic5MathEnglishMathPhysicsEnglishChinesePhysicChineseChineseMusic5MathEnglishPhysicsChineseMusic4MathEnglishMathPh
3、ysicsEnglishChinesePhysicChinese输出:InputError!MathEnglishPhysicsChineseMusic抽象数据结构类型描述(ADT):采用邻接表的方式来存储数据:抽象数据类型描述:TypedefstructArc*link;structArcIntadjvex;/邻接点编号Cha门nfo15;/存储结点信息Linknextarc;/指向下一个邻接点;StructVexCha门nfo;/顶点信息Intindgree;/顶点的入度Linkfirstarc;指向下一个邻接点;概要设计:算法主题思想:<1>、在有向图中选择一个没有前驱的顶点
4、,输出之;<2>、从有向图中删除该顶点和所有以该顶点为尾的边;<3>、重复上述步骤,直到全部顶点都已经输出了或者图中剩下的顶点都不满足上述的两个条件位置。后者说明有向图中存在环。详细设计:通过一下函数分块、分步的实现:voidcreat()function:建立邻接表intfind(char*str)function:在顶点集中查找信息为str的顶点的编号,并返回之voidupdate(intnode)function:没输出一个顶点的时候要相应的调用该函数更新顶点入度信息在main()函数内调用上述函数实现功能描述C+代码详见:code10.cpp#include&l
5、t;iostream>#include<cstring>#include<stdlib.h>usingnamespacestd;#defineMax1001intn,m;typedefstructArc*link;structArccharinfo15;intadjvex;linknextarc;structVexcharinfo15;intindgree;linkfirstarc;vMax;intfind(char*str)for(inti=1;i<=n;i+)if(!strcmp(str,)returni;voidcreat()cout&l
6、t;<"课程总数:"<<endl;cin>>n;cout<<"请输入各个顶点信息(即课程的编号):"<<endl;for(inti=1;i<=n;i+)cin>>;vi.indgree=0;vi.firstarc=NULL;)cout<<"请输入有向边数目:"cin>>m;cout<<"输入有向边(先修课程编号在前):"<<endl;for(inti=0;i<m;i+)char
7、ss15,tt15;cin>>ss>>tt;ints=find(ss),t=find(tt);vt.indgree+;linkp=(link)malloc(sizeof(Arc);strcpy(p->info,);p->adjvex=t;p->nextarc=vs.firstarc;vs.firstarc=p;)voidupdate(intnode)linkp=vnode.firstarc;while(p)if(vp->adjvex.indgree>0)vp->adjvex.indgree-;p=p->nextar
8、c;)intmain()intrelMax,len=0,t;cout<<"请输入测试数据数目:"<<endl;cin>>t;while(t-)creat();for(intk=1;k<=n;k+)for(inti=1;i<=n;i+)if(!vi.indgree)rellen+=i;vi.indgree=-1;update(i);)cout<<""<<endl;!"<<endl;if(len<n)cout<<"InputErrorel
9、se(for(inti=0;i<len;i+)cout<<<<""cout<<endl;cout<<""<<endl;system("pause");return0;/*25MathEnglishPhysicsChineseMusic5MathEnglishMathPhysicsEnglishChinesePhysicChineseChineseMusic5MathEnglishPhysicsChineseMusic4MathEnglishMathPhysicsEnglishChinesePhysicChinese*/调试分析:调试过程中没有发现什么问题测试结果:课程总数.曾输入各个顶点信息(即课程的编号):MdthEnglishPhysicsChinesePlusic请输人有向边数目;5辎人有向边(先修课程编号在前MMathEnglishMathPhysicsEnglishChinesePhysicChin«seChineseMusicInputErrorI课程总数:请输入各个顶点信息(即课程的编号):athnglis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程部安全教育培训制度
- 机关培训中心管理制度
- 驾校培训十项制度
- 客房部培训管理制度
- 党员培训班规章制度
- it部门培训制度
- 跨岗培训管理制度
- 教师线上培训积分制度
- 员工培训情况反馈制度
- 培训机构收费公示制度
- 2026届四川省成都市树德实验中学物理九上期末调研试题含解析
- 精密制造公司年度总结
- 修复承重柱地面施工方案
- 二手手机计划书项目方案
- 十年(2016-2025年)高考数学真题分类汇编:专题10 数列解答题综合一(原卷版)
- 2026年全球美容与个人护理趋势预测报告-英敏特-202510
- 2025内蒙古通辽市扎鲁特旗巨日合镇人民政府招聘护林员9人考试参考试题及答案解析
- 医院保洁人员安全管理与保障制度
- 工业园区规划(环境影响评价、水资源论证、安全风险评估等)方案咨询服务投标文件(技术标)
- 林下经济培训课件
- 黄褐斑的中医辨证分型及治疗
评论
0/150
提交评论