数据结构实验报告-教学计划编制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与程序设计实验实验报告
哈尔滨工程大学
实验报告五
实验课名称:数据结构与程序设计实验
实验名称:教学计划编制
班级:学号:姓名:时间:2016.05.03
一、问题描述
学历进修需要学生在一定的时间内完成一定的课程学习,每一门课有一定的
学分,修满学分,可获取相应的学历。因为有些课程内容是另一些课程的学习基
础,所以课程学习之间存有一定的先后次序。如:某学历的计算机专业需要学习的课程及课程之间的关系如表1 所示。
表 1 计算机专业进修课程
课程进修关系图课程编号课程名称学分
C1 程序设计基础 2
C2 离散数学 3
C3 数据结构 4
C4 汇编语言 3
C5 程序设计与分析 2
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{
int i;
ArcNode *p;
for(i=0;i indegree[i]=0; for(i=0;i p=G.vertices[i].firstarc; while(p){ indegree[p->adjvex]++; p=p->nextarc; } } } Status sum(ALGraph G){ //求大学所有课程总学分; int z=0; for(int i=0; i < G.vexnum; i++){ z += atoi(G.vertices2[i].data); } return z; } 四、界面设计 输入参数包括:学期总数,一学期的学分上限,课程数,弧的数目,每门课的课程号、学分和直接先修课的关系。输出各门课程所对应的学分,以及每学期各门课程的安排。所有输入输出均以提示给出。 五、运行测试与分析 1.输入学期总数,学分上限,课程数,弧的数目 2.输入每门课的课程号,学分,与直接先修课的关系(以弧的形式给出) 3.构造图并输出图的信息 4.按各学期中的学习负担尽量均匀地制定教学计划5.按尽可能短的时间完成学习,制定教学计划 6.当存在回路时输出提示 六、实验收获与思考 通过实际的编程,巩固了图的邻接表存储。拓扑排序等知识,同时在编程过程中发现了自己的不足,遇到了很多语法错误及逻辑错误,通过不断的调试解决问题,使我对编程有了更加深入的体会和认识。 七、附录(源代码) #include #include #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 typedef int Status; // Status是函数的返回类型 typedef int Boolean; #define MAX_NAME 10 //顶点字符串的最大长度