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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构与算法实验课表安排.docx

1、数据结构与算法实验课表安排数据结构与算法分析课程设计报告课题名称:拓扑排序 打印输出计算机本科专业4年每学期的课表 提交文档学生姓名: 提交文档学生学号: 同组 成 员 名 单: 指导 教 师 姓 名: 指导教师评阅成绩: 指导教师评阅意见: 提交报告时间: 2010 年 12 月 日1.实验题目: 拓扑排序打印输出计算机本科专业4年每学期的课表2.实验的目的和要求:(1)采用C+实现;(2)熟练掌握图的应用;(3)熟练掌握图的邻接矩阵存储结构以级拓扑排序的基本思想;(4)上机调试程序,掌握查错,排错使程序能正确运行。3.实验的环境: (1)硬件环境:联想G450笔记本电脑 (2)软件环境:W

2、indowsXP,MicrosoftVisualC+6.04.算法描述:程序流程图类的层次结构,每个类的设计, 包括数据成员和成员函数组成.class Graphpublic: virtual int n()=0; virtual int e()=0; virtual int first(int)=0; virtual int next(int,int)=0; virtual void setEdge(int,int,int)=0; virtual void delEdge(int,int)=0; virtual int weight(int,int)=0; virtual int getMa

3、rk(int)=0; virtual void setMark(int,int)=0;class Graphm:public Graphpublic: Graphm(int numVert); Graphm(); int n(); int e(); int first(int); int next(int,int); void setEdge(int,int,int); void delEdge(int,int); int weight(int,int); int getMark(int); void setMark(int,int);private: int numVertex,numEdg

4、e; int *matrix; int *mark;class Linkpublic: Link(); Link(string code,string name,int period,int semester,string precondition); string getCode(); void setCode(string str); string getName(); void setName(string str); int getPeriod(); void setPeriod(int p); int getSemaster(); void setSemester(int s); s

5、tring getPrecondition(); void setPredition(string str); Link* getNext(); void setNext(Link*);private: string code; string name; int period; int semester; string precondition; Link *next;class Listpublic: List(); void addCourse(Link* course); void insertCourse(Link* course); Link* getHead(); Link* ge

6、tTail(); void printlist();private: Link *head; Link *tail;测试程序说明int main() readFromFile();/从文件读取课程信息 Graphm graph(38); buildGraph(list,&graph);/做课程信息图 topsort(&graph);/对图进行拓扑排序 sortedlist.printlist();/打印排序后的结构 cout=0&ch=0&ch=9&(index=0&ch=9&(index0) Link*courselink=newLink(courCode,courName,courperi

7、od, coursemester,courPrecondition);/读取一次完整的信息即可将它生成一个Link节点 list.addCourse(courselink);/将Link节点加入List courCode.erase();/清除string中的内容,用于下一行次读取文件 courName.erase(); courPrecondition.erase(); /while input.close();/建图,添加有先决条件的结点之间的边void buildGraph(List &courseList,Graph* courseGraph) Link* courselink=cou

8、rseList.getHead(); int v1=0; while(courselink!=NULL) string str=courselink-getPrecondition(); for(int i=0;stri!=0;) if(stri=c)/课程以c开头,由此分辨先决条件 char ch1=str+i; char ch2=str+i; int v2=10*(ch1-48)+(ch2-48)-1;/将课程号转换为整型数据,图的下标用int表示的 courseGraph-setEdge(v2,v1,1); else i+; v1+; courselink=courselink-getN

9、ext(); void tophelp(Graph* G, int v)/ Process v G-setMark(v, 0); for (int w=G-first(v); wn();w = G-next(v,w) if (G-getMark(w) = 1) tophelp(G, w); Link* courselink=list.getHead(); for(int i=0;igetNext(); sortedlist.insertCourse(courselink);/将拓扑排序的正序存入sortedlist中,用于课程的安排void topsort(Graph* G) / Topolo

10、gical sort int i; for (i=0; in(); i+) / Initialize G-setMark(i,1); for (i=0; in(); i+) / Do vertices if (G-getMark(i) = 1) tophelp(G, i); / Call helpervoid courseArrange()/安排课表 Link* temp=sortedlist.getHead(); int count8; for(int i=0;i8;i+) counti=0; for(;count0getNext()/优先安排已经预设学期的课程 if(temp-getSem

11、aster()=1) count0+; else if(temp-getSemaster()=2) count1+; else if(temp-getSemaster()=3) count2+; else if(temp-getSemaster()=4) count3+; else if(temp-getSemaster()=5) count4+; else if(temp-getSemaster()=6) count5+; else if(temp-getSemaster()=7) count6+; else if(temp-getSemaster()=8) count7+; temp=so

12、rtedlist.getHead();/再按学期顺序安排已经安排学期的课程,srtedlist中的先后顺序对应了学期的先后顺序 for(;temp!=NULL;temp=temp-getNext() if(count0getSemaster()=0) temp-setSemester(1); count0+; else if(count1getSemaster()=0) temp-setSemester(2); count1+; else if(count2getSemaster()=0) temp-setSemester(3); count2+; else if(count3getSemas

13、ter()=0) temp-setSemester(4); count3+; else if(count4getSemaster()=0) temp-setSemester(5); count4+; else if(count5getSemaster()=0) temp-setSemester(6); count5+; else if(count6getSemaster()=0) temp-setSemester(7); count6+; else/semter8 if(temp-getSemaster()=0) temp-setSemester(8); count7+; void print

14、SchoolTimeTable()/打印课表 Link* temp=sortedlist.getHead();/semter1 coutcourses of semester 1 :endl; fstream output; output.open(course_table.txt); output第一学期课程: getNext() if(temp-getSemaster()=1) outputgetCode() getName()endl; coutgetCode() getName()endl; temp=sortedlist.getHead();/semter2 coutcourses

15、of semester 2 :endl; output第二学期课程: getNext() if(temp-getSemaster()=2) outputgetCode() getName()endl; coutgetCode() getName()endl; temp=sortedlist.getHead();/semter3 coutcourses of semester 3 :endl; output第三学期课程: getNext() if(temp-getSemaster()=3) outputgetCode() getName()endl; coutgetCode() getName(

16、)endl; temp=sortedlist.getHead();/semter4 coutcourses of semester 4 :endl; output第四学期课程: getNext() if(temp-getSemaster()=4) outputgetCode() getName()endl; coutgetCode() getName()endl; temp=sortedlist.getHead();/semter5 coutcourses of semester 5 :endl; output第五学期课程: getNext() if(temp-getSemaster()=5)

17、 outputgetCode() getName()endl; coutgetCode() getName()endl; temp=sortedlist.getHead();/semter6 coutcourses of semester 6 :endl; output第六学期课程: getNext() if(temp-getSemaster()=6) outputgetCode() getName()endl; coutgetCode() getName()endl; temp=sortedlist.getHead();/semter7 coutcourses of semester 7 :

18、endl; output第七学期课程: getNext() if(temp-getSemaster()=7) outputgetCode() getName()endl; coutgetCode() getName()endl; temp=sortedlist.getHead();/semter8 coutcourses of semester 8 :endl; output第八学期课程: getNext() if(temp-getSemaster()=8) outputgetCode() getName()endl; coutgetCode() getName()endl; output.c

19、lose();6.运行结果:测试数据选择(课程编码,课程名称,开课学时,预设开课学期,先决条件) (c01,程序设计基础,5,0,) (c02,离散数学,6,0,c01)(c03,数据结构,4,0,c01 c02) (c04,汇编语言,5,0,c01)(c05,算法设计,4,0,c03 c04) (c06,计算机组成原理,6,0,) (c07,微机原理,4,0,c03) (c08,单片机应用,3,0,c03)(c09,编译原理,5,0,c03) (c10,操作系统原理,4,0,c03)(c11,数据库原理,5,0,c03) (c12,高等数学,6,0,)(c13,线性代数,6,0,) (c14,数值分析,6,0,c12)(c15,普通物理,6,0,c12) (c16,计算机文化,3,0,) (c17,计算机系统结构,6,0,c06) (c18,

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

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