数据结构实验报告-教学计划编制 下载本文

内容发布更新时间 : 2024/5/3 21:13:51星期一 下面是文章的全部内容请认真阅读。

数据结构与程序设计实验

实 验 报 告

课程名称 实验项目名称学号姓名数据结构与程序设计实验 课程编号 0906550 计算机学院教学计划编制 年级专业 计算机科学与技术 学生所在学院 指导教师21B276 杨静 实验室名称地点

哈尔滨工程大学

实验报告五

实验课名称:数据结构与程序设计实验 实验名称:教学计划编制 班级: 学号: 姓名: 时间:2016.05.03 一、问题描述 学历进修需要学生在一定的时间内完成一定的课程学习,每一门课有一定的 学分,修满学分,可获取相应的学历。因为有些课程内容是另一些课程的学习基 础,所以课程学习之间存有一定的先后次序。如:某学历的计算机专业需要学习 的课程及课程之间的关系如表 1 所示。 表 1 计算机专业进修课程 课程进修关系图 课程编号 课程名称 学分 程序设计基础 C1 2 离散数学 C2 3 数据结构 C3 4 汇编语言 C4 3 程序设计与分析 2 C5 计算机原理 C6 3 编译原理 C7 4 操作系统 C8 4 高等数学 C9 7 线性代数 C10 5 普通物理 C11 2 数值分析 C12 3 软件工程 C13 3 数据库原理 C14 3 本设计的主要任务是根据需要完成的课程的先修关系、每学期开设的课程总 数及总的学习时间,制定出教学计划。需事先的基本功能如下。 a. 课程进修目录的读入。 b. 课程进修目录的编辑,如课程增加、删除、信息修改等。 c. 满足一定条件的教学计划的输出。 二、数据结构设计 1. 以邻接表存储课程名和学分 #define MAX_VERTEX_NUM 100 typedef struct ArcNode{ //弧结构 int adjvex; //该弧所指向的顶点的位置; struct ArcNode *nextarc; //指向下一条弧的指针 InfoType *info; //弧的权值指针 }ArcNode; //表结点 typedef struct{ //头节点 VertexType data; //顶点信息 ArcNode *firstarc; //第一个表结点的地址,指向第一条依附该顶点的弧的指针 }VNode, AdjList[MAX_VERTEX_NUM]; typedef struct{ AdjList vertices,vertices2; //分别存课程名和学分 int vexnum,arcnum; //图的当前顶点数和弧数 int kind; //图的种类标志 }ALGraph; //图 2. 拓扑排序时为了避免重复检测入度为0的顶点,用栈暂存所有入度为0的顶点 typedef struct SqStack{ SElemType *base; SElemType *top; int stacksize; }SqStack; 三、算法设计 1. 利用邻接表作为存储结构,构造课程先后关系的AOV网 int LocateVex(ALGraph G, VertexType u){ //返回顶点u在图G中的位置 int i; for(i=0; iadjvex = j; //指向下一个顶点的位置 p->info = NULL;