沈阳工程学院-数据结构课设报告_第1页
沈阳工程学院-数据结构课设报告_第2页
沈阳工程学院-数据结构课设报告_第3页
沈阳工程学院-数据结构课设报告_第4页
沈阳工程学院-数据结构课设报告_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、沈沈 阳阳 工工 程程 学学 院院 课 程 设 计 设计题目:设计题目:约瑟夫环、安排教学计划约瑟夫环、安排教学计划 系系 别别 信息学院信息学院 班级班级 学生姓学生姓 学号学号 指导教师指导教师 姜柳姜柳 、吕海华、吕海华 职称职称 副教授、讲师副教授、讲师 起止日期:起止日期: 年年 月月 日起日起至至 年年 月月 日止日止 沈 阳 工 程 学 院 课程设计任务书 课程设计题目:课程设计题目:约瑟夫环约瑟夫环 系系 别别 信息学院信息学院 班级班级 学生姓名学生姓名 学号学号 指导教师指导教师 姜柳姜柳 、吕海华、吕海华 职称职称 副教授、讲师副教授、讲师 课程设计进行地点:课程设计进行

2、地点: 实训实训 F F 座座 任任 务务 下下 达达 时时 间:间: 年年 月月 日日 起止日期:起止日期: 年年 月月 日起日起至至 年年 月月 日止日止 教教研研室室主主任任 张欣张欣 年年 月月 日日批批准准 一、课程设计的原始资料及依据 约瑟夫(Joeph)问题的一种描述是:编号为 1、2、n 的 n 个人按顺时针方向围坐一 圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人 开始按顺时针方向自 1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为 新的 m 值,从他在顺时针方向上的下一个人开始重新从 1 报数,如此下去,直至所有人

3、全部 出列为止。设计一个程序求出出列顺序及最后一个出列的人。 二、课程设计主要内容及要求 1约瑟夫环 . 认真阅读资料,掌握程序设计模块化的思想。 . 要求在设计的过程中,建立清晰的层次结构。 . 画出主要的功能结构图和主要模块的流程图。 . 建立一个具有 n 个结点,无头结点的循环链表。 . 确定参与人数及初始报数上限值 m。 . 不断地从链表中删除链结点,直到链表为空。 三、对课程设计说明书撰写内容、格式、字数的要求 1课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设 计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计 小组评语、参考文

4、献等。一般不应少于 3000 字。 2在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微 指令代码表等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。 3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学 到了什么,哪里遇到了困难,解决的办法以及今后的目标。设计小组评语处注明设计组编号、 设计组组长、设计组成员,并由设计组组长给出评语。 4课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑 墨水工整书写;打印时采用 A4 纸,页边距均为 20mm,正文采用宋体小四号字,行间距 18 磅。文中大标题采用黑体小三号字

5、,一级节标题采用黑体四号字,二级节标题采用黑体小四 号字,表题与图题采用宋体五号字。 5课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。 四、设计完成后应提交成果的种类、数量、质量等方面的要求 1完成“任务书”中指定的操作功能,运行稳定。 2课程设计说明书。 五、时间进度安排 顺序阶段日期计 划 完 成 内 容备注 1 第 1 天 阅读资料 2 第 23 天 系统分析设计 3 第 48 天 程序编制、调试及运行 4 第 9 天 成绩评定# 5 第 10 天 撰写课程设计说明书 六、主要参考资料(文献) 1郭翠英.C 语言课程设计案例精编.北京:中国水利水电出版社.20

6、04.3 2谭浩强.C 语言程序设计.北京:清华大学出版社.1999.12 3张翔.C 语言函数大全.北京:清华大学出版社.2002.4 4浦滨.C 游戏编程从入门到精通.北京: 北京希望电子出版社.2002.5 5陈天洲.C 语言高级程序设计. 北京:人民邮电出版社.2002 6杨旭.C 语言程序设计案例教程.北京: 人民邮电出版社.2005 7 王为青C 语言高级编程及实例剖析北京:人民邮电出版社200802 8徐慧.C 语言实例解析精粹.北京:人民邮电出版社.2006.04 9 姚大鹏 栾好利 张翼英 等编著.C 语言程序设计教程习题与上机实训指导.中国水 利水电出版社.2005 10

7、王为青C 语言实例解析北京:人民邮电出版社200802 沈 阳 工 程 学 院 课程设计任务书 课程设计题目:课程设计题目:安排教学计划安排教学计划 系系 别别 信息学院信息学院 班级班级 学生姓名学生姓名 学号学号 指导教师指导教师 姜柳姜柳 、吕海华、吕海华 职称职称 副教授、讲师副教授、讲师 课程设计进行地点:课程设计进行地点: 实训实训 F F 座座 任任 务务 下下 达达 时时 间:间: 年年 月月 日日 起止日期:起止日期: 年年 月月 日起日起至至 年年 月月 日止日止 教教研研室室主主任任 张欣张欣 年年 月月 日日批批准准 一、课程设计的原始资料及依据 学校每个学期开设的课程

8、是又先后顺序的,如计算机专业:开设数据结构课程之前, 必须先开设C 语言程序设计和离散数学课程,这种课程开设的先后顺序关系称为先 行,后继课程关系。现在需要根据给定的课程信息及课程之间的先行、后继关系,合理安排 出开设各门课程的先后顺序。 查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根 据对程序设计学习编写一个安排教学计划系统。通过本设计可以加深理解利用程序设计思想 开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。 二、课程设计主要内容及要求 1 对输入的课程先行、后继关系如果存在回路关系时应提示现错误; 2 根据读入的课程信息及其先行、后继关系,

9、计算出安排教学计划的序列。 3 输出教学计划的安排顺序或给出错误提示信息。 三、对课程设计说明书撰写内容、格式、字数的要求 1课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设 计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计 小组评语、参考文献等。一般不应少于 3000 字。 2在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微 指令代码表等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。 3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学 到了什么,哪里遇到了困难,解决的办法

10、以及今后的目标。设计小组评语处注明设计组编号、 设计组组长、设计组成员,并由设计组组长给出评语。 4课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑 墨水工整书写;打印时采用 A4 纸,页边距均为 20mm,正文采用宋体小四号字,行间距 18 磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四 号字,表题与图题采用宋体五号字。 5课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。 四、设计完成后应提交成果的种类、数量、质量等方面的要求 1完成“任务书”中指定的操作功能,运行稳定。 2课程设计说明书。 五、时间进度安排

11、 顺序阶段日期计 划 完 成 内 容备注 1 第 1 天 阅读资料 2 第 23 天 系统分析设计 3 第 48 天 程序编制、调试及运行 4 第 9 天 成绩评定 5 第 10 天 撰写课程设计说明书 六、主要参考资料(文献) 1严蔚敏 吴伟民.数据结构(C 语言版). 北京:清华大学出版社.2007 2谭浩强.C 程序设计.北京:清华大学出版社.1999.12 3滕国文.数据结构课程设计.北京:清华大学出版社.2010.09 4苏仕华 等编著. 数据结构课程设计. 北京:机械工业出版社.2005.05 5李春葆.数据结构(C 语言版)习题与解析.北京:清华大学出版社.2002.04 沈沈

12、阳阳 工工 程程 学学 院院 数据结构数据结构课程设计成绩评定表课程设计成绩评定表 系(部):系(部): 信息信息学院学院 班级:班级: 学生姓名:学生姓名: 指指 导导 教教 师师 评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 调研论证 能独立查阅文献,收集资料;能制定课程设计方 案和日程安排。 0.15 54 43 32 2 工作能力 态度 工作态度认真,遵守纪律,出勤情况是否良好, 能够独立完成设计工作, 0.25 54 43 32 2 工作量 按期圆满完成规定的设计任务,工作量饱满, 难度适宜。 0.25 54 43 32 2 说明书的 质量 说明书立论正确,论述充分

13、,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.55 54 43 32 2 指导教师评审成绩(加权分合计乘以指导教师评审成绩(加权分合计乘以 8 8) 分分加权分合计加权分合计 指指 导导 教教 师师 签签 名:名: 年年 月月 日日 评评 阅阅 教教 师师 评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 查阅文献 查阅文献有一定广泛性;有综合归纳资料的能 力 0.25 54 43 32 2 工作量工作量饱满,难度适中。 0.55 54 43 32 2 说明书的 质量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确

14、,符号统一,编号齐 全,图表完备,书写工整规范。 0.35 54 43 32 2 评阅教师评审成绩评阅教师评审成绩 (加权分合计乘以(加权分合计乘以 4 4) 分分加权分合计加权分合计 评评 阅阅 教教 师师 签签 名:名: 年年 月月 日日 答答 辩辩 小小 组组 评评 审审 意意 见见 评价容具 体 要 求权重评 分加权分 学生报 汇报准备充分,思路清晰;语言表达准确,概 念清楚,论点正确,有层次,有重点,基本上 反映了所完成任务的全部内容;时间符合要求。 0.53 32 2 答 辩 思路清晰;回答问题有理论依据,基本概念清 楚;主要问题回答准确,深入,有说服力。 0.5 答辩小组评审成绩

15、(加权分合计乘 8)分加权分合计 答辩小组教师签名: 年 月 日 课 程 设 计 总 评 成 绩分 沈沈 阳阳 工工 程程 学学 院院 数据结构数据结构课程设计成绩评定表课程设计成绩评定表 系(部):系(部): 信息信息学院学院 班级:班级: 学生姓名:学生姓名: 指指 导导 教教 师师 评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 调研论证 能独立查阅文献,收集资料;能制定课程设计 方案和日程安排。 0.15 54 43 32 2 工作能力态 度 工作态度认真,遵守纪律,出勤情况是否良好, 能够独立完成设计工作, 0.25 54 43 32 2 工作量 按期圆满完成规定的设

16、计任务,工作量饱满, 难度适宜。 0.25 54 43 32 2 说明书的质 量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.55 54 43 32 2 指导教师评审成绩(加权分合计乘以指导教师评审成绩(加权分合计乘以 8 8) 分分加权分合计加权分合计 指指 导导 教教 师师 签签 名:名: 年年 月月 日日 评评 阅阅 教教 师师 评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 查阅文献 查阅文献有一定广泛性;有综合归纳资料的能 力 0.25 54 43 32 2 工作量工作量饱满,难度适中。 0.5

17、5 54 43 32 2 说明书的质 量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.35 54 43 32 2 评阅教师评审成绩(加权分合计乘以评阅教师评审成绩(加权分合计乘以 4 4)分分加权分合计加权分合计 评评 阅阅 教教 师师 签签 名:名: 年年 月月 日日 答答 辩辩 小小 组组 评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 学生汇报 汇报准备充分,思路清晰;语言表达准确,概 念清楚,论点正确,有层次,有重点,基本上 反映了所完成任务的全部内容;时间符合要求。0.5 答 辩 思路清晰;回答

18、问题有理论依据,基本概念清 楚;主要问题回答准确,深入,有说服力。 0.5 答辩小组评审成绩答辩小组评审成绩 (加权分合计乘以(加权分合计乘以 8 8) 分分加权分合计加权分合计 答辩小组教师签名:答辩小组教师签名: 年年 月月 日日 课课 程程 设设 计计 总总 评评 成成 绩绩分分 沈沈 阳阳 工工 程程 学学 院院 数据结构数据结构课程设计成绩评定表课程设计成绩评定表 系(部):系(部): 信息信息学院学院 班级:班级: 学生姓名:学生姓名: 指指 导导 教教 师师 评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 调研论证 能独立查阅文献,收集资料;能制定课程设计 方案和

19、日程安排。 0.15 54 43 32 2 工作能力态 度 工作态度认真,遵守纪律,出勤情况是否良好, 能够独立完成设计工作, 0.25 54 43 32 2 工作量 按期圆满完成规定的设计任务,工作量饱满, 难度适宜。 0.25 54 43 32 2 说明书的质 量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.55 54 43 32 2 指导教师评审成绩(加权分合计乘以指导教师评审成绩(加权分合计乘以 8 8) 分分加权分合计加权分合计 指指 导导 教教 师师 签签 名:名: 年年 月月 日日 评评 阅阅 教教 师师

20、评评 审审 意意 见见 评价内容具 体 要 求权重评 分加权分 查阅文献 查阅文献有一定广泛性;有综合归纳资料的能 力 0.25 54 43 32 2 工作量工作量饱满,难度适中。 0.55 54 43 32 2 说明书的质 量 说明书立论正确,论述充分,结论严谨合理, 文字通顺,技术用语准确,符号统一,编号齐 全,图表完备,书写工整规范。 0.35 54 43 32 2 评阅教师评审成绩(加权分合计乘以评阅教师评审成绩(加权分合计乘以 4 4)分分加权分合计加权分合计 评评 阅阅 教教 师师 签签 名:名: 年年 月月 日日 答答 辩辩 小小 组组 评评 审审 意意 见见 评价内容具 体 要

21、 求权重评 分加权分 学生汇报 汇报准备充分,思路清晰;语言表达准确,概 念清楚,论点正确,有层次,有重点,基本上 反映了所完成任务的全部内容;时间符合要求。 0.5 答 辩 思路清晰;回答问题有理论依据,基本概念清 楚;主要问题回答准确,深入,有说服力。 0.5 答辩小组评审成绩答辩小组评审成绩 (加权分合计乘以(加权分合计乘以 8 8) 分分加权分合计加权分合计 答辩小组教师签名:答辩小组教师签名: 年年 月月 日日 课课 程程 设设 计计 总总 评评 成成 绩绩分分 沈阳工程学院课程设计 摘 要 摘 要 随着科学技术的发展,计算机技术在世界的每个角落得以运用与推广,其强大的功能已 为人们

22、深刻认识,利用计算机进行日常工作的管理也成为国家机关信息化的标志。同时,人 们对计算机技术需求的增加,也促进了计算机新技术的发展。时代在进步,科技在发展,这 改变了整个世界和人类的生活方式。同时,这也要求我们新世纪的大学生掌握现代科学技术 知识,调整自己的知识结构和能力结构,以适应社会发展的要求,跟上时代的脚步。新世纪 需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力,又有创新意识的新型 人才。随着各个领域的突飞猛进,计算机也有它卓越的进步。数据结构不仅为计算机专业工 作者所使用,而且为广大计算机应用人员所喜爱和使用。数据结构是国际上广泛流行的计算 机高级语言。它适合作为系统描述语

23、言,既可以用来编写系统软件,也可以用来编写应用软 件。许多高等学校,不仅在计算机专业开设数据结构课程,而且在非计算机专业也开设了数 据结构课程。学习数据结构已经成为广大计算机应用人员和广大青年学生的迫切要求。 约瑟夫生死游戏是典型的线性表的应用实例,其开发主要包括后台数据库的建立和维护 以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全 性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 现如今,无论是小学、中学还是大学每学期都要面临教学计划安排的问题。然而学校的 课程繁多,每所学校的课程也大不相同。给学生们安排课程成了老师的一项繁重而又难免的 工作。虽然

24、有软件可以实现课程的安排,但是大都需要购买,而且过程繁琐不好掌握。其实 这项工作并没有想象中的那么难做,我们完全可以运用我们所学的有关图的知识利用邻接表 和拓扑排序让计算机来帮我们完成这项工作,体验计算机技术给我带来的高效、和快速。课 程安排普遍的要求是:根据课程之间的依赖关系,在满足各学期课程数大致相同的条件下制 定出课程安排计划。 在为期两周的数据结构课程设计学习中,先要学习数据结构课程的目的掌握数据结构存 储的方法,学习会用计算机语言编写程序,以实现所需要处理的任务。要正确处理算法与语 法的关系,算法结构存储是程序的核心、是灵魂,语法是外壳、是工具。不应把学习重点放 在语法规则上,语法是

25、重要的,不掌握语法规则就无法编写出正确的程序。一定要把重点放 在解题的思路上和运用何种存储的方法,通过思考和大量的阅读,来构造一个完整的程序。 数据结构存储的设计直接关系到程序的好坏。 最后,感谢老师在我们程序设计的过程中辛勤的指导和不倦的教诲。 关键词关键词 线性表,图,邻接表,拓扑排序, 依赖关系, 算法结构存储 沈阳工程学院课程设计 目 录 I 目目 录录 摘摘 要要 .I 第一章第一章 问题分析问题分析.1 1.1 引言.1 1.2 背景 .1 1.2.1 约瑟夫生死游戏背景.1 1.2.2 安排教学计划背景.1 1.3 分析 .2 1.3.1 约瑟夫生死游戏分析.2 1.3.2 安排

26、教学计划分析.2 第二章第二章 原理与运行环境原理与运行环境.4 2.1 数据结构理论 .4 2.1.1 线性表.4 2.1.2 邻接表和图.4 2.2 运行环境 .5 第三章第三章 系统分析与设计系统分析与设计.7 3.1 约瑟夫生死游戏 .7 3.1.1 系统的功能.7 3.1.2 模块分析及流程图.8 3.2 安排教学计划 .10 3.2.1 系统的功能.10 3.2.2 模块分析及流程图.10 第四章第四章 系统功能实现系统功能实现.16 4.1 约瑟夫生死游戏 .16 4.1.1 头文件、宏、数据结构体定义.16 4.1.2 主函数和菜单函数.16 4.1.3 创建约瑟夫环函数.18

27、 4.1.4 输出出队顺序函数.19 4.2 安排教学计划 .21 4.2.1 头文件、宏、数据结构体定义.21 4.2.2 初始化栈、压栈、弹栈、判断栈空函数.21 4.2.3 邻接表建立函数.24 4.2.4 求图的入度函数.25 4.2.5 拓扑排序函数.25 4.2.6 主函数和菜单函数.28 总总 结结.29 致致 谢谢.30 参考文献参考文献.31 沈阳工程学院课程设计 第一章 问题分析 0 第一章 问题分析 1.1 引言 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定 关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效

28、率。数据结构往往同高效的检索算法和索引技术有关。 一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻 辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构 的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执 行的运算才有意义。 在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑 因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖 于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时 候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论

29、哪种情况,选择合适 的数据结构都是非常重要的。 选择了数据结构,算法也随之确定,是数据而不是算法是系 统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象 的程序设计语言就是其中之一。 数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构、 存储结构(物理结构)和数据的运算。数据的逻辑结构是对数据之间关系的描述,有时就把 逻辑结构简称为数据结构。逻辑结构形式地定义为(K,R)(或(D,S),其中,K 是数 据元素的有限集,R 是 K 上的关系的有限集。 数据元素相互之间的关系称为结构。有四类 基本结构:集合、线性结构、树形结构、图状结构(网状

30、结构)。树形结构和图形结构全称 为非线性结构。集合结构中的数据元素除了同属于一种类型外,别无其它关系。线性结构中 元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在 多对多关系。在图形结构中每个结点的前驱结点数和后续结点数可以任意多个。数据结构它 既是理论性较强的基础课,又是实践性很强的专业课,在计算机科学领域的主干课程中具有 承上启下的作用。它的先行课程有计算机基础、程序设计语言、离散数学和数学等;后继课 程有操作系统、数据库原理、编译原理和软件开发技术等。 综上所述我们应该,在实践中理解它学好它。数据结构学习的技巧:学习数据结构的概 念后对于抽象数据类型的设计

31、参考 C+ STL 标准库中容器的设计。这样对于无论是数据结构 的学习还有程序设计接口能力上都会有很大的提高。对于数据结构课程中很多时候都不太重 视的顺序(数组)做存储的数据结构,希望大家还是要多留意这快的知识对于有些场合需 要考虑时间换空间的情况下需要考虑顺序存储结构。数据结构学习一定要自己独立完成代码 实现,虽然有时候你理解内容了,但是实现上面还是会愈要很多困难的,解决这些困难会帮 助你提高程序设计的能力的。 沈阳工程学院课程设计 第一章 问题分析 1 1.2 背景 1.2.1 约瑟夫生死游戏背景 Josephus(约瑟夫斯): 约 37-100 ,犹太历史学家和军人原名约瑟夫本马赛厄 斯

32、生于耶路撒冷西元 66 年在反对罗马的犹太起义中他指挥一支加利利军队在向罗马 人投降时他施展手段获取优待,得以前往罗马,在那里写出几部关于犹太历史和宗教的著作, 包括犹太战争史(History of the Jewish War,西元 75-79 年问世)和犹太古事记 (Antiquities of the Jews,西元 93 年问世)卒于罗马。 据说著名犹太历史学家 Josephus 有过以下的故事:在罗马人占领乔塔帕特后,39 个 犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到, 于是决定了一个自杀方式,41 个人排成一个圆圈,由第 1 个人

33、开始报数,每报数到第 3 人 该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而 Josephus 和他的朋友并不想遵从。首先从一个人开始,越过 k-2 个人(因为第一个人已经被越过), 并杀掉第 k 个人。接着,再越过 k-1 个人,并杀掉第 k 个人。这个过程沿着圆圈一直进行, 直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什 么地方才能避免被处决?Josephus 要他的朋友先假装遵从,他将朋友与自己安排在第 16 个 与第 31 个位置,于是逃过了这场死亡游戏。 17 世纪的法国数学家加斯帕在数目的游戏问题中讲了这样一个故事:15 个

34、教徒和 15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了 一个办法:30 个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大 海,如此循环进行直到仅余 15 个人为止。问怎样排法,才能使每次投入大海的都是非教徒。 题目中 30 个人围成一圈 ,因而启发我们用一个循环的链来表示,可以使用结构数组来 构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二 为该人是否被扔下海的标记,为 1 表示还在船上。从第一个人开始对还未扔下海的人进行计 数,每数到 9 时,将结构中的标记改为 0,表示该人已被扔下海了。这样循环计数直到有

35、 15 个人被扔下海为止。 约瑟夫环问题的具体描述是:设有编号为 1,2,n 的 n(n0)个人围成一个圈, 从第 1 个人开始报数,报到 m 时停止报数,报 m 的人出圈,再从他的下一个人起重新报数, 报到 m 时停止报数,报 m 的出圈,如此下去,直到所有人全部出圈为止。当任意给定 n 和 m 后,设计算法求 n 个人出圈的次序。根据此问题用单链表构成的约瑟夫生死游戏系统。 约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。 1.2.2 安排教学计划背景 随着科学技术的发展,计算机技术在世界的每个角落得以运用与推广,其强大的功能已 沈阳工程学院课程设计 第一章 问题分析 2 为人们

36、深刻认识,利用计算机进行日常工作的管理也成为国家机关信息化的标志。同时,人 们对计算机技术需求的增加,也促进了计算机新技术的发展。 近代以来,特别是在实行学科课程的条件下,教学计划主要是学科的计划,或只是学科 表。随着社会经济和科学技术的新发展,教育结构不断发生变革,现代教育和教学理论主张 对教学计划的结构实行改革。除了教学以外,生产劳动、科技活动、发展体力和增进健康的 活动、艺术活动和社会活动等也应列入教学计划。在工具课和一般科学知识课、自然学科和 社会学科、普通教育课和职业教育课之间应相互渗透。在新知识不断涌现的形势下,只有必 修课而无选修课的单一结构不能适应学生个性才能的发展和知识多样性

37、的要求,适当增设选 修课,已成为发展的趋势。一些选修课在一定条件下,可能成为必修课。 根据一定的教育目的和培养目标制定的教学和教育工作的指导文件。教学计划决定着教 学内容总的方向和总的结构,并对有关学校的教学、教育活动,生产劳动和课外活动校外活 动等各方面作出全面安排,具体规定一定学校的学科设置、各门学科的教学顺序、教学时数 以及各种活动等。教学计划、教学大纲和教科书互相联系,共同反映教学内容。 然而学校的课程繁多,每所学校的课程也大不相同。给学生们安排课程成了老师的一项 繁重而又难免的工作。虽然有软件可以实现课程的安排,但是大都需要购买,而且过程繁琐 不好掌握。其实这项工作并没有想象中的那么

38、难做,我们完全可以运用我们所学的知识让计 算机来帮我们完成这项工作,体验计算机技术给我带来的高效、和快速。课程安排普遍的要 求是:根据课程之间的依赖关系,在满足各学期课程数大致相同的条件下制定出课程安排计 划。 针对各大院校课程繁多课程安排难的问题,并且避免以往程序的繁琐和不易上手,我们 从实际出发,充分运用我们所学的知识,根据不同学校的情况设计出教学计划安排检验程 序。安排教学计划系统可以根据用户输入的课程数、课程编号、课程间的先后关系数目以 及课程间两两间的先后关系,给出学生每学期应学的课程。该教学计划安排程序具有操作简 单,功能完善,实用性强等特点,能很好的完成教学计划的拓扑排序即课程安

39、排的先后顺序。 课程安排的先后顺序,与拓扑结构相同。可利用拓扑排序来实现。从而让计算机代替人 工安排课程。 1.3 分析 1.3.1 约瑟夫生死游戏分析 为了解决约瑟夫问题,并为了解决由此而衍生的类似的游戏原理理解问题。在制作的过 程中要解决问题分析,编码,制作等相关问题,本课程设计的目标是运用循环链表来解决 Josephus 环问题,其中运用了许多链表中的基本操作使该程序能够解决多个 Josephus 的简 沈阳工程学院课程设计 第一章 问题分析 3 单链表,Josephus 函数则是用 C+程序编写的程序,实现队列的建立、插入和删除等基本功 能,在程序设计成功的基础上,进一步深化理解队列的

40、作用和实现原理。 主要分析: 1.输入的形式和输入值的范围:本程序中,输入人数上限,均限定为正整数,输入的形 式为一个以“回车符”为结束标志的正整数。 2.输出的形式:从屏幕显示出列顺序。 3.程序功能:提供用户从键盘输入,Joseph 约瑟夫环的必要数据,并显示出列顺序。 1.3.1 安排教学计划分析 总体思想是利用拓扑排序的思想和堆栈思想编写相应函数。首先根据课程的先后关系画 出 AOV 网,网中的结点代表课程,有向边表示各学科之间的次序关系。可以采用邻接表作 AOV 网的存储结构,且在头结点中增加一个存放顶点入度的数组。 为了避免重复检测入度为零的顶点,可另设一栈暂存所有入度为零的顶点。

41、然后根据拓 扑排序依次输出应学的课程。编写的程序根据用户输入的课程数,课程编号,课程间的先后 关系数目以及课程间两两间的先后关系,实现输出课程安排的先后顺序的功能。 拓扑排序时有向图的一种重要运算。在课表排序中,每门课都有多种关系: (一)先后关系,即必须在一门课学完后,才能开始学习另一门课; (二)在一类课之间没有次序要求,即两门课可以同时学习,互不影响。将 AOV 网络 中的各个顶点排列成一个线性有序序列,使得所有的要求的前趋、后趋关系都能得到满足。 在 AOV 网络进行拓扑排序的方法: 1选择一个没有前趋的顶点,并把它输出; 2从网络中删去该顶点和从该顶点出发的所有有向边; 3重复执行上

42、述两步,直到网中所有的顶点都被输出。 沈阳工程学院课程设计 第二章 运行原理和环境 0 第二章 运行原理和环境 2.1 数据结构理论 2.1.1 线性表 线性表:是由类型相同的数据元素组成的有限序列,不同线性表的数据元素类型可以不 同,可以是最简单的数值和字符,也可以是比较复杂的信息。线性表的存储结构共分为两种: 顺序存储结构和链式存储结构。 约瑟夫生死游戏采用的数据结构是线性表的链式存储结构中的单向循环链表。 顺序存储结构:逻辑上相邻的数据元素在物理位置上也是相邻的,采用数组实现。 文本文件单词的检索和计数采用的数据结构是线性表的链式存储结构。 链式存储结构:不要求逻辑上相邻的数据元素在物理

43、位置上也是相邻的,插入删除操作 时不需要移动元素。 链式存储结构中单链表是一种最简单的线性表的链式存储结构,单链表也称为线性链表, 用它来存储线性表时,每个数据元素用一个结点(node)来存储,一个结点由两个成分域组 成,一个是存放数据元素的 data,称为数据域,另一个是存储指向此链表下一个结点的指 针 next,称为指针域。 循环链表:是一种线性表链式存储结构,它的结点结构与单链表相同,与单链表不同的 是在循环链表中表尾结点的 next 指针域不空(NULL),而是指向头结点,如图 2.1 所示。 图 2.1 循环链表 2.1.2 邻接表和图 邻接表是图的一种最主要存储结构,用来描述图上的

44、每一个点。对图的每个顶点建立一 个容器(n 个顶点建立 n 个容器),第 i 个容器中的结点包含顶点 Vi 的所有邻接顶点。实 际上我们常用的邻接矩阵就是一种未离散化每个点的边集的邻接表。 在有向图中,描述每个点向别的节点连的边(点 a-点 b 这种情况)。 在无向图中,描述每个点所有的边(点 a-点 b 这种情况) 与邻接表相对应的存图方式叫做边集表,这种方法用一个容器存储所有的边。 注意:n 个顶点 e 条边的无向图的邻接表表示中有 n 个顶点表结点和 2e 个边表结点。 (换句话说,每条边(i,j)在邻接表 中出现两次:一次在关于 i 的邻接表中,另一次在关 于 j 的邻接表中) 有向图

45、: 对于有向图,vi 的邻接表中每个表结点都对应于以 vi 为始点射出的一条边。因此,将 有向图的邻接表称为出边表。 沈阳工程学院课程设计 第二章 运行原理和环境 1 【例】有向图 G6 如下图所示,其中顶点 v1 的邻接表上两个表结点中的顶点序号分别为 0 和 4,它们分别表示从 v1 射出的两条边(简称为 v1 的出边):和。 图存储的方法举例如图 2.2: 图 2.2 图存储的方法举例 注意: n 个顶点 e 条边的有向图,它的邻接表表示中有 n 个顶点表结点和 e 个边表结点。(因 为有向图是单向的) 逆邻接表 在有向图中,为图中每个顶点 vi 建立一个入边表的方法称逆邻接表表示法。

46、入边表中的每个表结点均对应一条以 vi 为终点(即射入 vi)的边。 【例】G6 的逆邻表如上面(b)图所示,其中 v0 的入边表上两个表结点 1 和 3 分别表示 射人 v0 的两条边(简称为 v0 的入边):和。 注意: n 个顶点 e 条边的有向图,它的逆邻接表表示中有 n 个顶点表结点和 e 个边表结点。 3邻接表的形式说明。 邻接表是一个二维容器,第一维描述某个点,第二维描述这个点所对应的边集们。 实现邻接表的方法绝对有 100 种以上。即使是前向星这种东西也是邻接表,因为它还是 描述某个点和这个点所对应的边集们. 我们说说常用的邻接表存图法(静态的 array 就不说了.)必须有开

47、 O1 以及以上编译的 条件,不然没有测试的效率无任何意义。 沈阳工程学院课程设计 第二章 运行原理和环境 2 2.2 运行环境 Microsoft Visual Studio(简称 VS)是美国微软公司的开发工具包系列产品。VS 是 一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如 UML 工 具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台, 包括 Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework 和 Microso

48、ft Silverlight 及 Windows Phone。 Visual Studio 是目前最流行的 Windows 平台应用程序的集成开发环境。最新版本为 Visual Studio 2013 版本,基于.NET Framework 4.5.1 。 此次课程设计需要使用 Microsoft Visual Studio 2010 集成开发环境。Visual Studio 是微软公司推出的开发环境。是目前较流行的 Windows 平台应用程序开发环境。Visual Studio 2010 版本于 2010 年 4 月 12 日上市,其集成开发环境(IDE)的界面被重新设计和 组织,变得更加

49、简单明了。Visual Studio 2010 同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP),并且 支持开发面向 Windows 7 的应用程序。除了 Microsoft SQL Server,它还支持 IBM DB2 和 Oracle 数据库。 Visual C+ 全称是 MicroSoft Visual C+, 即微软的 C+ 和 C 的编译器。 用 Visual C+写程序,即用微软的 C+语言写程序,可以调用微软的 C+ 的 MFC 等程序库,应 用

50、微软的 C+ 的头文件。 MicroSoft Visual C+ 是 C+ 语言或编译器的一种,只能用于 普通的 PC 机视窗环境,不能用于 unix 等其它计算机。Visual C+ 也可以看成是名称或商 业标记,以便于与别的公司出的编译器区分。 Visual 是强调它的 C+支持“可视”,支持 作图。 C+ 是 统称。有各式各样的 C+,有用于 PC 的别的 C+,有用于其它平台的 C+。 就如 unix 是 统称,具体的 unix 有 Sun 的,HP 的,SGI 的,DEC 的,linux 等。 不讲 Visual 的 C 或 C+,不等于它不支持“可视”,不支持作图。 Visual

51、C+ 调用的 OpenGL 来源于硅图公司的 GL,硅图在 SiliconGraphics IRIS (unix 系统)机上就叫 C, “可视” 搞得最好。 在 Windows 环境下,先通过浏览找到 VS2010 打开如图 2.3 所示,新建一个文件即可进 行编程,其运行界面如图 2.4 所示。 图 2.3 VS2010 运行环境 沈阳工程学院课程设计 第二章 运行原理和环境 3 图 2.4 运行界面 沈阳工程学院课程设计 第三章 系统分析与设计 0 第三章 系统分析与设计 3.1 约瑟夫生死游戏 3.1.1 系统的功能 约瑟夫环问题描述的是:设编号为 1,2,n 的 n(n0)个人按顺时针

52、方向围坐一 圈,每个人持有一正整数密码。开始时选择一个正整数作为报数上限 m,从第一个人开始顺 时针方向自 1 起顺序报数,报到 m 时停止报数,报 m 的人出圈,将他的密码作为新的 m 值, 从他在顺时针方向上的下一个人起重新从 1 报数。如此下去,直到所有人都出圈为止。所需 要的数据结构为线性表的链式储存结构,根据思想可以确定约瑟夫生死游戏的功能主要包括, 初始化约瑟夫生死环、设定生死规则、输出出队顺序和游戏界面设置。系统功能模块图如图 3.1 所示。 图 3.1 系统功能模块图 如图 3.1 所示,本系统分为 4 个功能模块分别为:初始化约瑟夫生死环、设定生死规则、 输出生者和死者和游戏

53、界面设置。 1.初始化约瑟夫生死环:使整个游戏在链表中运行,使得结点在删除时不需要移动大量 的结点; 2.设定生死规则:输入要删除的位置序号,进而使链表具化体,从而可以构建一个具体 的链表; 3.输出出队顺序:输出被投入海中人的位置序号、每个人的密码及最后一个出队的人和 其密码值; 4.游戏界面设置:游戏开始时提示“按任意键继续”,运行最后显示菜单界面,可 以继续进行游戏或者直接退出。 3.1.2 模块分析及流程图 约瑟夫生死游戏分为 4 个模块分别为:初始化约瑟夫生死环、设定生死规则、输出生者 沈阳工程学院课程设计 第三章 系统分析与设计 1 和死者和游戏界面设置。主要模块的设计如下: 1.

54、初始化约瑟夫生死环 初始化约瑟夫生死环主要实现使整个游戏在链表中运行,使得结点在删除时不需要移动 大量的结点,用 p,q 两个指针的移动构建一个单循环链表用 next 作为存放下一个接点的地 址空间并将头结点放入最后一个地址空间使之能形成以循环单链表结构,使整个游戏在链表 中运行,使得结点在删除时不需要移动大量的结点。初始化约瑟夫生死环模块的流程图如图 3.2 所示。 图 3.2 初始化约瑟夫生死环流程图 2.设定生死规则 输入要删除的位置序号,进而使链具化体,从而可以构建一个具体的链表;接收头指针 L 对其进行循环遍历找到输入的第 n 个对其剔除结点后的链表进行重新连接又有构成了一个 新的链

55、表,使得循环继续进行。设定生死规则的流程图如图 3.3 所示。 沈阳工程学院课程设计 第三章 系统分析与设计 2 图 3.3 设定生死规则流程图 3.输出出队顺序 输出第一个被投入海中人的位置序号和其密码值;接收指针 L 并将其赋值给头指针输出 数据域 data 然后指向下一个地址循环遍历链表输出所有被投入海中人的位置序号和密码值 及最后一个出队的人和其密码值。设计流程图如图 3.4 所示。 图 3.4 输出出队顺序流程图 沈阳工程学院课程设计 第三章 系统分析与设计 3 3.2 安排教学计划 3.2.1 系统的功能 总体思想是利用拓扑排序的思想和堆栈思想编写相应函数。 首先根据课程的先后关系

56、画出 AOV 网,网中的结点代表课程,有向边表示各学科之间的 次序关系。可以采用邻接表作 AOV 网的存储结构,且在头结点中增加一个存放顶点入度的数 组。 为了避免重复检测入度为零的顶点,可另设一栈暂存所有入度为零的顶点。然后根据拓 扑排序依次输出应学的课程。 编写的程序根据用户输入的课程数,学期数,课程间的先后关系数目以及课程间两两间 的先后关系,实现输出每学期应学的课程的功能。 安排教学计划 菜 单 及 默 认 课 程 名 求 图 的 入 度 拓 扑 排 序 输 出 排 序 栈 的 一 系 列 操 作 建 临 接 表 其功能模块图如图 3.5 所示。 如图 3.5 所示,本系统分为 6 个

57、功能模块分别为:菜单及默认课程、栈的一系列操作、 建立邻接表、求图的入度、拓扑排序、输出排序。 1. 菜单及默认课程:使整个系统在运行前,让用户了解系统默认的值及初始条件; 2. 栈的一系列操作:用于求图的入度、拓扑排序、输出排序等模块运行使用; 3. 建立邻接表:用于存储图即课程编号,课程的先后顺序; 4. 求图的入度:用于拓扑排序和输出排序。 5. 拓扑排序:将输入的课程编号和课程的先后顺序进行拓扑排序。 6. 输出排序:输出运行结果。 3.2.2 系统分析模块分析及流程图 总体思想是利用拓扑排序的思想和堆栈思想编写相应函数。 沈阳工程学院课程设计 第三章 系统分析与设计 4 首先根据课程

58、的先后关系画出 AOV 网,网中的结点代表课程,有向边表示各学科之间的 次序关系。可以采用邻接表作 AOV 网的存储结构,且在头结点中增加一个存放顶点入度的数 组。 为了避免重复检测入度为零的顶点,可另设一栈暂存所有入度为零的顶点。然后根据拓 扑排序依次输出应学的课程。 编写的程序根据用户输入的课程数,学期数,课程间的先后关系数目以及课程间两两间 的先后关系,实现输出每学期应学的课程的功能。 1.系统总流程图,如图 3.6 所示。 2.拓扑排序算法思想和流程图 系统总流程图,图 3.6 流程图如图 3-5 所示。 沈阳工程学院课程设计 第四章 系统功能实现 0 第四章 系统功能实现 4.1 约

59、瑟夫生死游戏 4.1.1 头文件、宏、数据结构体定义 一般而言,每个 C+/C 程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声 明(declaration),而定义文件用于保存程序的实现 (implementation)。约瑟夫生死游戏中 包含的头文件有:#include 定义输入/输出函数、#include 定义杂项 函数及内存分配函数和#include 定义数学函数,通过宏定义把空指针、错误返回 值和正确返回值进行定义数值,结构体定义相关类型的链表空间有整型数据空间,循环单

60、链 表存储下一个指针空间。 /头文件定义 #include /输入输出函数头文件 #include /字符串转短整形函数的头文件 /宏定义 #define NULL 0 #define ERROR 0 #define OK 1 /数据结构类型定义 typedef struct LNode/定义单循环链表中节点的结构 int num;/编号 int pwd;/password struct LNode *next;/指向下一结点的指针 LNode; 4.1.2 主函数和菜单函数 本功能模块主要是通过源程序的编写实现的主函数菜单界面。对使用者在使用该软件时 进行提示如何进行操作。在本软件中是利用人

温馨提示

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

评论

0/150

提交评论