资源描述:
《数据结构教学计划编制问题课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、武汉纺织大学数学与计算机学院数据结构课程设计报告设计题目教学计划编制问题学生姓名:学号:班级:指导老师:报告日期:易爽1304240717计科1301马宁2015.1.201题目与要求1.1问题提出大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的吋间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以冇任意多门,也可以没冇。每门课恰好占一个学期。1.2本系统涉及的知识点图的存储结构邻接表有向无环图及其应用拓扑排序对AOV■网构造其定点的拓扑有序序列1.3功能要
2、求(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。(2)允许用户指定卜•列两种编排策略Z-:一是使学生在各学期中的学习负担尽量均匀;二是使课程可能地集中在前几个学期中。(3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。[测试数据]学期总数:6;学分上限:10;该专业共开设12门课,课程号从C01到C12,学分顺序为2,3,4,3,2,3,4,4,7,52,3。先修关系如下:课程编号课程名称先决条件C1程序设计基础无C2离散数学C1C3数据结构Cl,C2C4汇编语言C1C5语
3、言的设计和分析C3,C4C6计算机原理C11C7编译原理C5,C3C8操作系统C3,C6C9髙等数学无C10线性代数C9Cll普通物理C9C12数值分析C9,CIO,Cl2功能设计2.1数据结构定义1.头结点,表结点,邻接表的定义#defineMAX_VERTEX_NUM100//最大课程总数typedefstructArcNode{intadjvex;structArcNocle*nextarc;JArcNode;typedefstructVNode{charname[24];//课程名intclassic!;//课程号intcredit;//课程的学分intindegree
4、;//该结点的入度intstate;//该节点的状态ArcNode*firstarc;//指向第一条依附该顶点的弧的指针}VNode,AdjList[MAX_VEXTEX_NUM];typedefstruct{AdjListvertices;intvexnum,arcnum;JALGraph;邻接表的基本操作:voidCreatGraph(ALGraph*);创建邻接表voidFindInDegree(ALGraph,int*);求一个结点的入度voidTopologicalSort_l(ALGraphG.intnumtermjntmaxcredit);拓扑排序来编排课程voi
5、dTopologicalSort_2(ALGraphGJntnumtermjntmaxcredit);1.栈的定义:#defineSTACk_INIT_SIZE100//存储空间的初时分配量#defineSTACKINCREMENT10//存储空间的分配增量typcdcfintElcmTypc;typedefstruct)AdjListvertices;intvcxnum,arcnum;JALGraph;基本操作:voidInitStack(SqStack*S);栈的初始化intStackEmpty(SqStackS);判断栈是否为空voidPush(SqStack*S,int
6、);入栈操作intPop(SqStack*S,int*e);岀栈操作intSort(SqStack*S,int*t);3程序代码设计1.LocateVex():图的邻接表存储的基本操作。rfl初始条件:图G存在,u和G屮顶点有相同特征转而进行判断,若G中存在顶点u,则返回该顶点在图中位置;否则返回-lointLocateVex(ALGraphG,VertexTypeu)inti;for(i=0;i7、接农存储结构,构造没有相关信息的图G(用一个函数构造种图)。StatusCreateGraph(ALGraph*G){inti,j,k;VertexTypeva,vb;ArcNode*p;printfC*请输入教学计划的课程数:”);scanf("%d",&(*G).vexnum);printfC1请输入拓扑排序所形成的课程先修关系的边数:“);scanf("%dn,&(*G).arcnum);printf(u输入%d个课程的代表值(<%d个字符):M,(*G).vexnum,MAX_N