教学编制问题c语言数据结构实现 下载本文

内容发布更新时间 : 2024/5/23 19:43:14星期一 下面是文章的全部内容请认真阅读。

数据结构

课程设计报告

主题:教学计划编制问题 班级:计科四班 姓名:熊金莲 指导老师:郭艳

内容概要

(1) 题目要求

(2) 教学计划编制问题的要点

(3) 函数模块及各函数可实现的功能简介 (4) 具体的源代码 (5) 使用说明 (6) 实验心得 一:题目要求如下:

大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。

要求

(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)学分和直接先修课的课程号。

(2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。

(3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。计划的表格格式自行设计。

二:教学计划编制问题的要点:

根据问题描述及要求,可知设计中需要定义先修关系的AOV网图中的顶点及弧边的结构体,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题——输出每学期的课程。

1) 采用第二种策略:使课程尽可能地集中在前几个学期中; 2) 根据教学计划中的课程及其关系和学分定义图的顶点和 边的结构体

3) 创建图CreateGraph():结合先修关系的AOV网,显示代号

所对应课程及课程的先修课程

4)拓扑排序TopologicalOrder (G):将课程排序后并决定出每学期所学课程,输出图G的信息Display(G):将图的顶点和弧边输出

三:程序模块及可实现的功能简介: 1)、图的邻接表的存储表示,即结构体的定义

typedef struct ArcNode {

int AdjOfV; ata);

scanf(\ while (va[0]!='0') {

i = LocateVex(G, va); irst; irst = p; scanf(\

getchar();

} }

3)、输出图的顶点和边

printf(\个顶点\

for (i = 0;i < ;++i)printf(\ printf(\条弧边:\\n\ for (i = 0;i < ;i++) { p = [i].first; while (p)

{ printf(\

p = p->next; } }

4)、通过栈实现拓扑排序

int TopologicalOrder(ALGraph G,AdjList R,struct Name name[]) {

int i, k, j = 0, count, indegree[MAX_VER]; SqStack S; ArcNode *p;

FindInDegree(G, indegree); ata,[i].grades);

R[j++] = [i]; irst; p; p=p->next)rades ; printf(\第%d个学期应学课程:\while (C <= MaxScores) {