- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(教学计划编制问题1
*******************
实践教学
*******************
兰州理工大学
2011年春季学期
算法与数据结构课程设计
题 目:
专业班级:
姓 名:
学 号:
指导教师:
成 绩:
摘要
在本设计实验中,采用的是顺序表存储的方式,根据不同科目的先修关系与教学计划的安排,来设计教学计划编制程序。
教学计划编制问题的目的是解决教学计划的要求与课程之间先修关系的冲突。首先定义先修关系的AOV网图中的顶点及弧边的结构体,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题——输出每学期的课程AOV网教学计划在编制的过程中,有一个层次的关系。比如说:数值分析必须在高等数学学完之后才可以学习,数据结构必须要在学习了一两门程序设计语言之后才可以学习。也就是说有的课程必须要在学习完了某些课程之后才可以学习。编制教学计划,当然涉及到的课程都要给学完。所以我们可以将所以的课程编制成一张图,然后遍历图。由于课程有前续后继的关系,所以用AOV网是最合适。对AOV网进行拓扑排序即可以得出结果。对AOV网进行拓扑排序有两种情况:广度优先和深度优先。在进行深度优先周游时,我们要考虑到一种情况。例如:高等数学和C语言编程是并列的两门学科,他们之间没有前续后继的关系,可以同时进行学习。高等数学是数值分析和电子电路的基础课程,电子电路又是模拟电子电路的基础课程。C语言编程是数据结构的基础课程,数据结构是算法设计与分析的基础课程。如果按照深度优先周游的话就有可能将上面几门课程排成:C语言程序设计,数据结构,算法设计与分析,高等数学,电子电路,模拟电子电路。这样的教学计划很明显不符合实际教学的需要。因此我们应该进行广度优先周游,将高等数学和C语言程序设计先学,再学其他后继课程。。LocateVex()CreateGraph():构造生成树
Display():输出图的邻接矩阵
FindInDegree():求顶点的入度
InitStack():构造一个空栈
ClearStack():清空栈
StackEmpty():判断是否为空栈
Pop():出栈
Push():入栈
TopologicalSort():输出G顶点的拓扑排序结果
2.2模块的层次结构及调用关系
2.3模块的主要功能
见“详细设计”-“主要函数流程图”
2.4数据结构和数据库结构
储存的数据为结构体类型数组,以及结构体单链表结点类型。
1)typedef struct ArcNode
弧所指定点位置 指向下一条弧的指针 网的权值指针 int struct InfoType
2)typedef struct
顶点信息 第一个表结点的地址 VertexType ArcNode
三.主要功能的实现
3.1采用C语言定义相关的数据类型。
其中包括字符常量,整型,字符型,字符串型,typedef 定义的类型,结构体型,单链表节点类型,结构体数组。
3.2主要函数的流程图
1.LocateVex()
图CreateGraph() 图Display()
2.CreateGraph():构造生成图。采用邻接表存储结构,构造没有相关信息的图G(用一个函数构造种图)。
3.Display():输出图的邻接矩阵。采用循环设置输出图的邻接矩阵。
4.FindInDegree():求顶点的入度。
图FindInDegree() 图InitStack()
5.InitStack():构造一个空栈。
6.ClearStack():清空栈。
7.StackEmpty():判断栈是否为空。若栈S为空栈,则返回TRUE,否则返回FALSE。
Pop():出栈。若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR。
Push():入栈。插入元素e为新的栈顶元素。
10.TopologicalSort():输出G顶点的拓扑排序结果。有向图G采用邻接表存储结构。若G无回路,则输出G的顶点的一个拓扑序列并返回OK, 否则返回ERROR。
3.3画出各函数的调用关系图
四、程序调试
4.1测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
数据如下:学期总数:6;
学分上限:10;
该专业共开设课数:12
课程号:从C01到C12;
学分顺序:2,3,4,3,2,3,4,4,7,5
文档评论(0)