沈阳工程学院数据结构课设报告Word文件下载.docx
《沈阳工程学院数据结构课设报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《沈阳工程学院数据结构课设报告Word文件下载.docx(51页珍藏版)》请在冰豆网上搜索。
二、课程设计主要内容及要求
1.约瑟夫环
①.认真阅读资料,掌握程序设计模块化的思想。
②.要求在设计的过程中,建立清晰的层次结构。
③.画出主要的功能结构图和主要模块的流程图。
④.建立一个具有n个结点,无头结点的循环链表。
⑤.确定参与人数及初始报数上限值m。
⑥.不断地从链表中删除链结点,直到链表为空。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;
打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的操作功能,运行稳定。
2.课程设计说明书。
五、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
第1天
阅读资料
2
第2—3天
系统分析设计
3
第4—8天
程序编制、调试及运行
4
第9天
成绩评定#
5
第10天
撰写课程设计说明书
六、主要参考资料(文献)
[1]郭翠英.C语言课程设计案例精编.北京:
中国水利水电出版社.2004.3
[2]谭浩强.C语言程序设计.北京:
清华大学出版社.1999.12
[3]张翔.C语言函数大全.北京:
清华大学出版社.2002.4
[4]浦滨.C游戏编程从入门到精通.北京:
北京希望电子出版社.2002.5
[5]陈天洲.C语言高级程序设计.北京:
人民邮电出版社.2002
[6]杨旭.C语言程序设计案例教程.北京:
人民邮电出版社.2005
[7]王为青.C语言高级编程及实例剖析.北京:
人民邮电出版社.2008.02
[8]徐慧.《C语言实例解析精粹》.北京:
人民邮电出版社.2006.04
[9]姚大鹏栾好利张翼英等编著.C语言程序设计教程习题与上机实训指导.中国水利水电出版社.2005
[10]王为青.C语言实例解析.北京:
安排教学计划
学校每个学期开设的课程是又先后顺序的,如计算机专业:
开设《数据结构》课程之前,必须先开设《C语言程序设计》和《离散数学》课程,这种课程开设的先后顺序关系称为先行,后继课程关系。
现在需要根据给定的课程信息及课程之间的先行、后继关系,合理安排出开设各门课程的先后顺序。
查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根据对程序设计学习编写一个安排教学计划系统。
通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。
1对输入的课程先行、后继关系如果存在回路关系时应提示现错误;
2根据读入的课程信息及其先行、后继关系,计算出安排教学计划的序列。
3输出教学计划的安排顺序或给出错误提示信息。
成绩评定
[1]严蔚敏吴伟民.数据结构(C语言版).北京:
清华大学出版社.2007
[2]谭浩强.C程序设计.北京:
[3]滕国文.数据结构课程设计.北京:
清华大学出版社.2010.09
[4]苏仕华等编著.数据结构课程设计.北京:
机械工业出版社.2005.05
[5]李春葆.数据结构(C语言版)习题与解析.北京:
清华大学出版社.2002..04
数据结构课程设计成绩评定表
系(部):
信息学院班级:
学生姓名:
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研论证
能独立查阅文献,收集资料;
能制定课程设计方案和日程安排。
0.1
工作能力态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
指导教师评审成绩(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
查阅文献
查阅文献有一定广泛性;
有综合归纳资料的能力
工作量饱满,难度适中。
0.3
评阅教师评审成绩
(加权分合计乘以4)
分
评阅教师签名:
答辩小组评审意见
评价容
学生报
汇报准备充分,思路清晰;
语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;
时间符合要求。
答辩
思路清晰;
回答问题有理论依据,基本概念清楚;
主要问题回答准确,深入,有说服力。
答辩小组评审成绩(加权分合计乘8)
答辩小组教师签名:
课程设计总评成绩
学生姓名:
评阅教师评审成绩(加权分合计乘以4)
学生汇报
答辩小组评审成绩
(加权分合计乘以8)
摘要
随着科学技术的发展,计算机技术在世界的每个角落得以运用与推广,其强大的功能已为人们深刻认识,利用计算机进行日常工作的管理也成为国家机关信息化的标志。
同时,人们对计算机技术需求的增加,也促进了计算机新技术的发展。
时代在进步,科技在发展,这改变了整个世界和人类的生活方式。
同时,这也要求我们新世纪的大学生掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求,跟上时代的脚步。
新世纪需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力,又有创新意识的新型人才。
随着各个领域的突飞猛进,计算机也有它卓越的进步。
数据结构不仅为计算机专业工作者所使用,而且为广大计算机应用人员所喜爱和使用。
数据结构是国际上广泛流行的计算机高级语言。
它适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。
许多高等学校,不仅在计算机专业开设数据结构课程,而且在非计算机专业也开设了数据结构课程。
学习数据结构已经成为广大计算机应用人员和广大青年学生的迫切要求。
约瑟夫生死游戏是典型的线性表的应用实例,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
现如今,无论是小学、中学还是大学每学期都要面临教学计划安排的问题。
然而学校的课程繁多,每所学校的课程也大不相同。
给学生们安排课程成了老师的一项繁重而又难免的工作。
虽然有软件可以实现课程的安排,但是大都需要购买,而且过程繁琐不好掌握。
其实这项工作并没有想象中的那么难做,我们完全可以运用我们所学的有关图的知识利用邻接表和拓扑排序让计算机来帮我们完成这项工作,体验计算机技术给我带来的高效、和快速。
课程安排普遍的要求是:
根据课程之间的依赖关系,在满足各学期课程数大致相同的条件下制定出课程安排计划。
在为期两周的数据结构课程设计学习中,先要学习数据结构课程的目的掌握数据结构存储的方法,学习会用计算机语言编写程序,以实现所需要处理的任务。
要正确处理算法与语法的关系,算法结构存储是程序的核心、是灵魂,语法是外壳、是工具。
不应把学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序。
一定要把重点放在解题的思路上和运用何种存储的方法,通过思考和大量的阅读,来构造一个完整的程序。
数据结构存储的设计直接关系到程序的好坏。
最后,感谢老师在我们程序设计的过程中辛勤的指导和不倦的教诲。
关键词线性表,图,邻接表,拓扑排序,依赖关系,算法结构存储
第一章问题分析
1.1引言
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。
对数据元素间逻辑关系的描述称为数据的逻辑结构;
数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;
此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。
这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
数据结构是指同一数据元素类中各数据元素之间存在的关系。
数据结构分别为逻辑结构、存储结构(物理结构)和数据的运算。
数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构。
逻辑结构形式地定义为(K,R)(或(D,S)),其中,K是数据元素的有限集,R是K上的关系的有限集。
数据元素相互之间的关系称为结构。
有四类基本结构:
集合、线性结构、树形结构、图状结构(网状结构)。
树形结构和图形结构全称为非线性结构。
集合结构中的数据元素除了同属于一种类型外,别无其它关系。
线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。
在图形结构中每个结点的前驱结点数和后续结点数可以任意多个。
数据结构它既是理论性较强的基础课,又是实践性很强的专业课,在计算机科学领域的主干课程中具有承上启下的作用。
它的先行课程有计算机基础、程序设计语言、离散数学和数学等;
后继课程有操作系统、数据库原理、编译原理和软件开发技术等。
综上所述我们应该,在实践中理解它学好它。
数据结构学习的技巧:
学习数据结构的概念后对于抽象数据类型的设计参考C++STL标准库中容器的设计。
这样对于无论是数据结构的学习还有程序设计接口能力上都会有很大的提高。
对于数据结构课程中很多时候都不太重视的顺序(数组)做存储的数据结构,希望大家还是要多留意这快的知识.对于有些场合需要考虑时间换空间的情况下需要考虑顺序存储结构。
数据结构学习一定要自己独立完成代码实现,虽然有时候你理解内容了,但是实现上面还是会愈要很多困难的,解决这些困难会帮助你提高程序设计的能力的。
1.2背景
1.2.1约瑟夫生死游戏背景
Josephus(约瑟夫斯):
约37--100,犹太历史学家和军人·
原名约瑟夫·
本·
马赛厄斯·
生于耶路撒冷·
西元66年在反对罗马的犹太起义中他指挥一支加利利军队·
在向罗马人投降时他施展手段获取优待,得以前往罗马,在那里写出几部关于犹太历史和宗教的著作,包括《犹太战争史》(HistoryoftheJewishWar,西元75--79年问世)和《犹太古事记》(AntiquitiesoftheJews,西元93年问世)卒于罗马。
据说著名犹太历史学家Josephus有过以下的故事:
在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
然而Josephus和他的朋友并不想遵从。
首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。
接着,再越过k-1个人,并杀掉第k个人。
这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。
问题是,给定了和,一开始要站在什么地方才能避免被处决?
Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:
15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:
30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。
问怎样排法,才能使每次投入大海的都是非教徒。
题目中30个人围成一圈,因而启发我们用一个循环的链来表示,可以使用结构数组来构成一个循环链。
结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;
其二为该人是否被扔下海的标记,为1表示还在船上。
从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。
这样循环计数直到有15个人被扔下海为止。
约瑟夫环问题的具体描述是:
设有编号为1,2,……,n的n(n>
0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。
当任意给定n和m后,设计算法求n个人出圈的次序。
根据此问题用单链表构成的约瑟夫生死游戏系统。
约瑟夫问题并不难,但求解的方法很多;
题目的变化形式也很多。
1.2.2安排教学计划背景
近代以来,特别是在实行学科课程的条件下,教学计划主要是学科的计划,或只是学科表。
随着社会经济和科学技术的新发展,教育结构不断发生变革,现代教育和教学理论主张对教学计划的结构实行改革。
除了教学以外,生产劳动、科技活动、发展体力和增进健康的活动、艺术活动和社会活动等也应列入教学计划。
在工具课和一般科学知识课、自然学科和社会学科、普通教育课和职业教育课之间应相互渗透。
在新知识不断涌现