数据结构与程序设计专题实验报告 1 实验报告 一、实验任务 实验题目:图的基本操作及教学计划的编制 二、实验内容 实验四:图的基本操作及教学计划编制问题 (一)实验目的:掌握图的基本操作 (二)基本要求:实现必要的图的基本操作,编写教学计划编制程序,输出正确结果
(三)内容提要: 大学的每个专业都要制定教学计划
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有
每门课恰好占一个学期
试在这样的前提下设计一个教学计划编制程序
( 1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3 位的字母数字串)、学分和直接先修课的课程号
( 2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中
( 3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中
计划的表格格式自行设计
( 4)测试数据:学期总数6;学分上限10;共开设12 门课,课程号从C1-C12,学分顺序为 2,3,4,3,2,3,4,4,7,5,2,3
先修关系见教材(严蔚敏-数据结构-C 语言版)图 7
但程序不能仅局限于该测试数据
三、要点分析 题目中涉及的主要知识点有: (1)栈
用到有关栈的操作有初始化栈、判断栈是否为空、入栈和出栈
其中栈主要用来存放入度为零的顶点,即当前无先修关系可以编排的课程
用到有关图的操作有创建图、统计图中各顶点的入度
利用邻接表作为有向图的存储结构,且在头结点中增加一个存放顶点入度的数组(indegree)
入度为零的顶点即为没有前驱的顶点,删除顶点及以它为尾的弧的操作,则可换以弧头顶