数据结构实验报告-教学计划编制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 //顶点字符串的最大长度

相关文档
最新文档