数据结构课程设计报告 敢死队问题.doc

上传人:laozhun 文档编号:4171069 上传时间:2023-04-08 格式:DOC 页数:18 大小:394.50KB
返回 下载 相关 举报
数据结构课程设计报告 敢死队问题.doc_第1页
第1页 / 共18页
数据结构课程设计报告 敢死队问题.doc_第2页
第2页 / 共18页
数据结构课程设计报告 敢死队问题.doc_第3页
第3页 / 共18页
数据结构课程设计报告 敢死队问题.doc_第4页
第4页 / 共18页
数据结构课程设计报告 敢死队问题.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数据结构课程设计报告 敢死队问题.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告 敢死队问题.doc(18页珍藏版)》请在三一办公上搜索。

1、 课 程 设 计(数据结构)班 级计科1003姓 名 学 号1011051093 指导教师 二一一年一月十日课程设计任务书及成绩评定课题名称 敢死队问题 、题目的目的和要求: 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 、设计进度及完成情况日 期内 容12.31-1.1选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。1.11.2创建相关数据结构,录入

2、源程序。1.21.3调试程序并记录调试中的问题,初步完成课程设计报告。1.4上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(C语言版)清华大学出版社 19992 严蔚敏 数据结构题集(C语言版)清华大学出版社 19993 徐宝文等译 C语言程序设计 清华大学出版社4 与所用编程环境相配套的C语言或C+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一一 年 一 月 十 日目 录第一章 概述1第二章 系统分析2第三章 概要设计3

3、第四章 详细设计4第五章 运行与测试9第六章 总结与心得13参考文献14第一章 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。在这次的课程设计中我选择的题目是图书管理

4、。传统的人工图书管理,基本业务活动有对一本书的采编入库、清除库存、借阅和归还等等,但是人工统计操作起来效率相对来说要低,也容易出错。但是现在这些业务借助计算机系统完成后,效率可以得到提高,也可以减少出错的几率。可以使图书管理的日常业务更加的方便,迅捷,减少很多劳动量。课程设计的目的意义:加深对循环队列和数组的理解,以及对循环队列和数组的实际应用,加强自己的动手操作能力,增加对课程的兴趣,而不是枯燥的看课本。课程设计的问题:敢死队问题 有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个

5、号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。 排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。第二章 系统分析1 敢死队问题包括:两个数据的输入,一个是队员的数量,另一个是模拟的形式。由于问题给出的数数的数量为5 ,所以k 值就默认为5 ,不再设置数据输入。故重点是要完成两种数据结构形式的删除,循环标记等操作。2 演示程序是以用户于计算机的对话方式执行,这

6、需要调用一个清屏函数来完成使用者与计算机语言之间界面的处理。3 程序执行时的命令:本程序为了使用时的方便,采用阿拉伯数字的方式来完成程序的等各种选择输入,几乎不用输入什么特殊的命令。(要注意输入时必须用数字,否者可能会引起一些死循环)5. 测试数据。 1 5 13 数据运行结果 在第五章有详细的截图第三章 概要设计1. 数据结构类型: 一种是循环队列,另一种是数组形式 其中循环队列操作只需要删除操作,用数组形式处理和运算上则较复杂些 因此,循环队列占优势2. 程序总体上分为两大块,一块是循环队列的模拟,一块是数组形式的模拟 这两种形式功能都是模拟每个开始数数的位置对员的死亡顺序,其中循环 队列

7、的函数接口为:lianbiao(n) ,数组的函数接口为:array(n);两模块算法基本一致,数据结构形式不同而已算法概述:For(int i=1;i安全的位置; 第四章 详细设计1:存储结构形式 struct node int data; node *next;struct nodel int data;sqlistN;2:成员函数部分 int del(node *p,node *q) / 链表的删除操作 while(q-next!=q) int k=4; while(k-) p=p-next; q=q-next; if(q-data=1) return 0; else coutdatan

8、ext; p-next=q; if(q-next=q) return 1; void lianbiao(int n) int i,flag=0; for( i=1;i=n;i+)/ 循环找出安全的开始位置 int k=i; coutnn报数的位置为kdata=1; head-next=head; int j=1; while(+jdata=j; p-next=t-next; t-next=p; t=t-next; t=head; node *p=head,*q;/ 设置p q 指针 while(p-next!=head) p=p-next; q=head; while(-k) /循环找开始的位

9、置 p=p-next; q=q-next; if(del(p,q)=1) /判断位置是否安全 coutendli位置安全n; flag=i; else coutendli位置不安全n; continue ; if(flag) coutnn安全位置是: flagnn; else cout所有的位置都不安全13) key-=13; if(sqkey.data!=0) k-; if(key=1) if(sum=1) return 1; else return 0; else sum-=sqkey.data; sqkey.data=0; coutkey13) key-=13; / coutsqkey.

10、data key13) key-=13; / coutsqkey.data keyendl; while(1);void array(int n) int i,flag=0; for( i=1;i=n;i+)/ 循环找出安全的开始位置 int k=i; coutnn报数的位置为k时的排长之前的人员死亡顺序:n; int j=1,sum=0; while(j = n) /构造循环队列 sqlistj.data=j; sum+=j+; if( delx(sqlist,k,n,sum)=1) coutendli位置安全n; flag=i;/coutflagendl; else coutendlk位置

11、不安全n; /coutflagendl; cout 所有人员情况: 0 表示已死 其它表示幸存者编号nn; for(int xx=1;xx=n;xx+) coutsqlistxx.data ; coutendl; if(flag) cout安全的位置是:flagnnn; else coutnn无安全位置可选nendl;/ 漏洞检测3 : 主函数部分int main() cout-敢死队之死亡游戏模拟-n; int n,cas; cout作为一名行政长官,报数开始位置很重要nendl; cout下面将模拟每个开始位置的人员死亡顺序-n; /system(cls); do coutcas; if(

12、cas3|cas=0) cout输入错误n;continue; coutn请输入队员的数量n; switch(cas) case 1: lianbiao(n);break; case 2: array(n); break; default : cout输入错误n;break; coutss; if(ss=3) break; else system(cls); while(cas!=3); return 0;第五章 运行与测试1. 调试程序的过程中遇到什么问题 处理过程中经常忽视特殊位置的处理 像开始位置为1时,循环队列就会出现bugs而数组形式中删除操作不容易处理,用0 标记来代替 删除操作,

13、在循环数数的时候经常认为是5 ,但是 循环只需要进行4 次即可。而删除操作的判断则用sum 总和进行判断,替换循环判断,省时!操作方便,在4 层循环数数操作中容易漏 data 为0 的判断以及 对 key 的变相取余3.测试数据 1 5 13 第六章 总结与心得 通过这一课程设计,加深了我对数据结构这门课程所学内容的进一步的理解与掌握;同时,通过对循环队列和数组的应用,使得我将计算机课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,培养了我开发一个中小型程序的能力。调程序的时候,要稳扎稳打,每个子函数单调试后在和主函数链接,效率较高,不然都最后全在一块,给调程序会带来极大的不便!对

14、于每个子函数都要考虑到一些特殊值。最大的收获还是感觉到数据结构的实用性,不像看课本和考试那样,总是参生厌烦情绪,离开发一些东西越来越近了,而不像以前那样很遥远。总之,在这个的课程设计中,我的收获还是挺大的,不仅对于专业课有了更好的认识,而且还学到做事要细心、全面周到的重要性。参考文献:1 严蔚敏、吴伟民主编 数据结构(C语言版) 清华大学出版社 20022 殷人昆等著 数据结构(C+版) 清华大学出版社 20013 金远平著 数据结构(C+描述) 清华大学出版社 2005 4 许卓群等著 数据结构与算法 高等教育出版社 20045 Frank M.Carrano 等著 数据结构与+高级教程清华大学出版社 20046 严蔚敏、吴伟民 数据结构习题集(C语言版)清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号