数据结构实验报告-教学计划编制_第1页
数据结构实验报告-教学计划编制_第2页
数据结构实验报告-教学计划编制_第3页
数据结构实验报告-教学计划编制_第4页
数据结构实验报告-教学计划编制_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构与编程实验实验报告课程名称数据结构与编程实验课程编号实验项目名称制定教育计划学号学年姓名专家计算机科学与技术学生所在的学院计算机学院指导教师杨静实验室名称网站21bs276战斗机哈尔滨工业大学实验报告5实验课名称:数据结构和程序设计实验实验名称:教育计划编制类别:学号:名称:时间: 2016.05.03一、问题的说明学历研修需要学生在一定时间内完成一定的课程,每节课都有一定的课程修学分、学分,就能得到相应的学历。 因为有些课程内容是另一门课程的学习基础因为是基础,所以在课堂学习之间有一定的优先顺序。 例如,某学历的计算机专业应该学习的课程和课程的关系如表1所示。表1计算机专业培训课程课程进修关系图课程编号课程名称单位c1.c1程序设计基础2c2.c2离散数学3C3数据结构4C4汇编语言3c5.c5程序设计与分析2c6.6计算机原理3C7系列编译原理4C8操作系统4C9系列高等数学7c100系列线性代数5C11系列普通物理2C12系列数值分析3C13系列软件工程3C14系列数据库原理3本设计的主要任务是根据需要完成的课程前提关系,每学期开设的课程总需求量数数和总学习时间,制定教学计划。 预先需要的基本功能如下所示。a .载入课程培训目录。b .编辑课程培训目录,例如增加、删除课程、修改信息等。c .符合一定条件的教育计划的输出。二、数据结构设计1 .在邻表中存放课程名称和学分#define MAX_VERTEX_NUM 100typedef struct ArcNode /弧构造int adjvex; /该弧所指顶点的位置结构节点*下一个arc; /指向下一条弧的指针InfoType *info; /弧的权重指针ArcNode; /表节点typedef struct /头节点VertexType data; /顶点信息ArcNode *firstarc; /第一个表节点的地址指向依赖于第一个顶点的弧的指针VNode,AdjListMAX_VERTEX_NUM;typedef structAdjList vertices,vertices2; /分别保存课程名称和学分int vexnum,arcnum; /图的当前顶点数和弧数int kind; /图的种类显示ALGraph; /图2 .为了避免拓扑排序时重复检测出输入度为0的顶点,在堆栈中暂时存储所有输入度为0的顶点。typedef结构堆栈SElemType *base;SElemType *top;堆叠大小;SqStack;三、算法设计1 .利用邻接表作为记忆结构,构筑课程前后关系的AOV网int LocateVex(ALGraph G,VertexType u) /返回图g中顶点u的位置int i;for(i=0; iadjvex=j; /指向下一个顶点的位置p-info=NULL;p-next arc=g.vertices I .firstarc;G.verticesi.firstarc=p;以下称为return OK;以下称为2 .为了在拓扑排序时不重复检测到输入速度为0的顶点,需要在堆栈中暂时存储输入速度为0的顶点,以下是与堆栈有关的操作Status InitStack(SqStack *S)/构建空堆栈(* s ).base=(elemtype * ) malloc (stack _ init _ size * sizeof (elemtype ) )if! (*S).base )溢出(overflow )(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;return OK;以下称为void clear堆栈(sqstack * s ) /清空堆栈S-top=S-base;以下称为Status StackEmpty(SqStack S) /确定堆栈是否为空if(S.top=S.base )return TRUE;elsereturn FALSE;以下称为Status Pop(SqStack *S,elemtype*e )?if(*S).top=(*S).base )return ERROR;*e=*-(*S).top;return OK;以下称为Status Push(SqStack *S,elemtypee )?if (* s ).top-(* s ).base=(* s ).stack size ) (* s ).base=(elemtype * ) realloc (* s ).base、(* s ).stacksizestackincrement ) * sizeof (elemtype );if! (*S).base )溢出(overflow )(* s ).top=(* s ).base (* s ).stack size;(* s ) .堆栈大小=堆栈增量;以下称为*(*S).top) =e;return OK;以下称为3 .拓扑排序和课程设计输出a .在有向图中选择没有前驱的顶点,并将其输出b .从图中删除该顶点及其后面的所有圆弧重复a、b直到输出所有顶点为止,或者不存在没有前驱的顶点(图中存在循环)。输出statustopologicalsort (algrapag ) /g顶点的拓扑排序结果int i,k,count;int indegreeMAX_VERTEX_NUM; /indegree阵列存储顶点的进度bool has=false;SqStack S;pathone a;pathtwo b;ArcNode * p;FindInDegree(G,indegree) /在各顶点求出度indegree0.vernum-1InitStack(S )for(i=0; inexarc )k=p-adjvex;if! (-incdegreek)/i第I个顶点到各邻接点的进度-1推(s,k )以下称为以下称为if(count G.vexnum) /图中不存在先驱顶点printf (此有向图有一个电路 n );return ERROR;elseprintf (是拓扑序列。 nn );has=true;以下称为printf (各学期中的学习负担尽量均等(输入1)n );printf (尽可能短的时间完成课程体系(输入2) n );int pattern;printf (选择(1or2): )scanf(%d”,pattern );FindInDegree(G,indegree) /在各顶点求出度indegree0.vernum-1清除堆栈(s )printf (=n )printf (教育计划:n ) :int xq=1; /学期数int xfh; /单位和int now=0;int top=G.vexnum/term_num;/平均每学期课程数int pjxf=sum(G)/term_num; /每个学期的平均单位while(xq=term_num 1)int result20; /某学期的课程int m=0;xfh=0;now=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论