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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学期授课计划编制教材Word格式.docx

1、 int CONTINUE = 1; while(CONTINUE != 0)-n ALGraph f; /图的邻接表存储;请输入学期总数: scanf(%d,&term_num);请输入每学期的学分上限:credit_lim); CreateGraph(f); Display(f); TopologicalSort(f);n按1继续,按0结束:CONTINUE); return 0;2.栈模块typedef enumDGGraphKind; /有向图,有向网,无向图,无向网;typedef struct ArcNode /弧结构; int adjvex; /该弧所指向的顶点的位置; stru

2、ct ArcNode * nextarc; /指向下一条弧的指针; InfoType * info; /网的权值指针;ArcNode; /表结点;typedef struct VertexType data; /顶点信息; ArcNode *firstarc; /第一个表结点的地址,指向第一条依附该顶点的弧的指针;VNode, AdjListMAX_VERTEX_NUM; AdjList vertices,vertices2; /分别存课程名和学分; int vexnum,arcnum; int kind;ALGraph;int LocateVex(ALGraph G,VertexType u

3、) int i; for(i=0;iG.vexnum;+i) if(strcmp(u, G.verticesi.data)=0) return i; return -1;Status CreateGraph(ALGraph &G) int i,j,k; VertexType v1,v2; /顶点信息; ArcNode * p; /指向第一条依附某顶点的弧的指针;请输入教学计划的课程数: G.vexnum);请输入课程先修关系数(弧的数目): G.arcnum);请输入%d个课程的代表值(如:c01):n,G.vexnum);+i) %s,G.verticesi.data); G.vertice

4、si.firstarc=NULL;请输入%d个课程的学分值:,(G).vexnum);,G.vertices2i.data);请顺序输入每条弧的弧尾和弧头(以空格作为间隔): for(k=0;kadjvex = j;info = NULL;nextarc = G.verticesi.firstarc; G.verticesi.firstarc = p; return OK;void Display(ALGraph G) switch(G.kind) case DG:有向图n%d个顶点:%s n%d条弧:,G.arcnum);i+) p=G.verticesi.firstarc;void Fin

5、dInDegree(ALGraph G,int indegree) ArcNode *p;i+) indegreei=0; while(p) indegreep-adjvex+; p=p-nextarc;typedef int SElemType;#define STACK_INIT_SIZE 10#define STACKINCREMENT 2typedef struct SqStack SElemType *base; SElemType *top; int stacksize;SqStack;Status InitStack(SqStack *S) (*S).base=(SElemTyp

6、e *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!(*S).base) exit(OVERFLOW); (*S).top=(*S).base; (*S).stacksize=STACK_INIT_SIZE;void ClearStack(SqStack *S) /清空栈的操作 S-top=S-base;Status StackEmpty(SqStack S) if(S.top=S.base) return TRUE; else return FALSE;3.排序模块Status Pop(SqStack *S,SElemType *e) if(*

7、S).top=(*S).base) return ERROR; *e=*-(*S).top;Status Push(SqStack *S,SElemType e) if(*S).top-(*S).base=(*S).stacksize) (*S).base=(SElemType *)realloc(*S).base,(*S).stacksize+STACKINCREMENT)*sizeof(SElemType); (*S).top=(*S).base+(*S).stacksize; (*S).stacksize+=STACKINCREMENT; *(*S).top)+=e;Status zxf

8、(ALGraph G) int z=0; for(int i=0; i adjvex;(-indegreek)S,k); if(countG.vexnum)此有向图有回路n else为一个拓扑序列。nn has=true; int pattern=2; /对各顶点求入度indegree0.vernum-1 ; ClearStack(&=n教学计划如下: int xq = 1; /学期数; int xfh; /学分和; int now=0; int top = G.vexnum / term_num ; /平均每学期课程数; int pjxf = zxf(G) / term_num ; /每学期

9、平均学分; while(xq = term_num + 1) int result20; /某个学期的课程; int m = 0; xfh = 0; now=0; /当前学期课程数 ;+i) if(0 = indegreei) if(xq = term_num+1 & !还有课程未安排!StackEmpty(S) & xq credit_lim) break; if(pattern = 1) if(xq!=term_num/2&nowtop) now = 0; if(pattern = 2)=1&xq!=term_num/2-1& indegreei-; /减为-1,避免被再次计入; inde

10、greek-; if(indegreek=0) resultm=i; m+; if(xq 第%d个学期的课程为:,xq); for(int j=0; jm; j+)课程%s ,G.verticesresultj.data); xq+;四、程序运行截图程序开始运行界面测试数据:学期一共为2个学期,每个学期上限10学分,总共教学计划安排5门课,分别为c1课2学分,c2课6学分,c3课4学分,c4课6学分,c5课2学分。必须先上c1课再上c2课,先上c3课再上c4课,根据总教学时间最少的要求排课,输出的排课结果为:第一学期c5、c3,第二学期c4、c1。还有c2没有安排,所以无法排课,排课失败。学期

11、一共为1个学期,每个学期上限10学分,总共教学计划安排3门课,分别为c1课2学分,c2课2学分,c3课2学分。必须先上c1课再上c3课,根据总教学时间最少的要求排课,输出的排课结果为:第一学期c2、c1、c3。排课成功。五、调试总结1.由于对于指针的操作掌握的不是很熟练,导致越界访问现象频频发生,因此,今后自己应该加强对指针的掌握和使用,以便可以更加顺利的编程。2.各操作时空复杂性比较合理,时空复杂度均为O(n),O(1)。3.本程序作业采用数据结构抽象的程序设计方法,使得设计时思路清晰,实现时调试顺利,各模块具有较好的可重复性,确实得到了一次良好的程序设计训练。六、参考文献1 严蔚敏、吴伟民

12、 编著.数据结构题集(C语言版). 北京:清华大学出版社. 19992 严蔚敏、吴伟民 编著.数据结构(C语言版).北京:清华大学出版社. 2007七、程序清单#includestdio.hstdlib.hiomanipmath.h / floor(),ceil(),abs()#include using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1typedef int Status; / Status是函数的返回类型;typedef int Boolean;#define MAX_NAME 10 /顶点字符串的最大长度;#define MAX_CLASS_NUM 100int Z=0;int X=0;int term_num,credit_lim,q=1;typedef int InfoType;typedef char VertexTypeMAX_NAME; /字符串类型;#define MAX_VERTEX_NUM 100%s%s ,G.verticesi.data,G.verticesp-adjvex.data); (*S).base=(SElemType *)r

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

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