ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:315.50KB ,
资源ID:238742      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/238742.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验报告教学计划编制.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、数据结构与程序设计实验实 验 报 告课程名称数据结构与程序设计实验课程编号0906550实验项目名称教学计划编制学号年级姓名专业计算机科学与技术学生所在学院计算机学院指导教师杨静实验室名称地点21B276哈尔滨工程大学实验报告五实验课名称:数据结构与程序设计实验实验名称:教学计划编制班级:学号:姓名:时间:2016.05.03一、问题描述学历进修需要学生在一定的时间内完成一定的课程学习,每一门课有一定的学分,修满学分,可获取相应的学历。因为有些课程内容是另一些课程的学习基础,所以课程学习之间存有一定的先后次序。如:某学历的计算机专业需要学习 的课程及课程之间的关系如表 1 所示。表 1 计算机

2、专业进修课程课程进修关系图课程编号课程名称学分C1程序设计基础2C2离散数学3C3数据结构4C4汇编语言3C5程序设计与分析2C6计算机原理3C7编译原理4C8操作系统4C9高等数学7C10线性代数5C11普通物理2C12数值分析3C13软件工程3C14数据库原理3 本设计的主要任务是根据需要完成的课程的先修关系、每学期开设的课程总数及总的学习时间,制定出教学计划。需事先的基本功能如下。a. 课程进修目录的读入。b. 课程进修目录的编辑,如课程增加、删除、信息修改等。c. 满足一定条件的教学计划的输出。二、数据结构设计1. 以邻接表存储课程名和学分#define MAX_VERTEX_NUM

3、100typedef struct ArcNode /弧结构 int adjvex; /该弧所指向的顶点的位置; struct ArcNode *nextarc; /指向下一条弧的指针 InfoType *info; /弧的权值指针ArcNode; /表结点typedef struct /头节点 VertexType data; /顶点信息 ArcNode *firstarc; /第一个表结点的地址,指向第一条依附该顶点的弧的指针VNode, AdjListMAX_VERTEX_NUM;typedef struct AdjList vertices,vertices2; /分别存课程名和学分

4、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; iG.vexnum; +i) if(strcm

5、p(u, G.verticesi.data)=0) return i; return -1;Status CreateGraph(ALGraph &G) /构造图 int i,j,k; VertexType v1,v2; /顶点信息,字符串类型 ArcNode *p; /指向第一条依附某顶点的弧的指针 printf(请输入教学计划的课程数: ); /课程数即为顶点数 scanf(%d,& G.vexnum); printf(请输入课程先修关系数(弧的数目): ); scanf(%d,& G.arcnum); printf(请输入%d个课程的名称(以字符代替):n,G.vexnum); for(

6、i=0; iG.vexnum; +i) scanf(%s,G.verticesi.data); /存储课程名 G.verticesi.firstarc=NULL; printf(请输入%d个课程的学分值:n, (G).vexnum); for(i=0; iG.vexnum; +i) scanf(%s,G.vertices2i.data);/存储学分 printf(请顺序输入每条弧的弧尾和弧头(以空格作为间隔):n); for(k=0; kadjvex = j; /指向下一个顶点的位置 p-info = NULL; p-nextarc = G.verticesi.firstarc; G.vert

7、icesi.firstarc = p; return OK;2. 在拓扑排序时为了避免重复检测入度为0的顶点,需要用栈暂存所有入度为0的顶点,以下为栈的相关操作Status InitStack(SqStack *S)/构造一个空栈 (*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!(*S).base) exit(OVERFLOW); (*S).top=(*S).base; (*S).stacksize=STACK_INIT_SIZE; return OK;void ClearStack(SqStack *S

8、) /清空栈 S-top=S-base;Status StackEmpty(SqStack S) / 判断栈是否为空 if(S.top=S.base) return TRUE; else return FALSE;Status Pop(SqStack *S,SElemType *e) if(*S).top=(*S).base) return ERROR; *e=*-(*S).top; return OK;Status Push(SqStack *S,SElemType e) if(*S).top-(*S).base=(*S).stacksize) (*S).base=(SElemType *)

9、realloc(*S).base,(*S).stacksize+STACKINCREMENT)*sizeof(SElemType); if(!(*S).base) exit(OVERFLOW); (*S).top=(*S).base+(*S).stacksize; (*S).stacksize+=STACKINCREMENT; *(*S).top)+=e; return OK;3. 拓扑排序并输出课程设计a.在有向图中选一个没有前驱的顶点且输出之b.从图中删除该顶点和所有以它为尾的弧重复a,b直至全部顶点均已输出,或者不存在无前驱的顶点(图中存在环)Status TopologicalSort

10、(ALGraph G) /输出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-1 InitStack(&S); for(i=0;inextarc) k=p-adjvex; if(!(-indegreek) /对i号顶点的每个邻接点的入度-1 Push(&S,k); if(c

11、ount G.vexnum) /图中有不存在前驱的顶点 printf(此有向图有回路n); return ERROR; else printf(为一个拓扑序列。nn); has=true; printf(各学期中的学习负担尽量均匀(输入1)n); printf(用尽可能短的时间完成教学计划(输入2)?n); int pattern; printf(请选择(1 or 2):); scanf(%d,&pattern); FindInDegree(G,indegree); /对各顶点求入度indegree0.vernum-1 ClearStack(&S); printf(=n); printf(教学计划如下:n);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1