




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计(数据结构)班 级计科1003姓 名 学 号1011051093 指导教师 二一一年一月十日课程设计任务书及成绩评定课题名称 敢死队问题 、题目的目的和要求: 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 、设计进度及完成情况日 期内 容12.31-1.1选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。1.11.2创建相关数据结构,录入源程序。1.21.3调试程序并记录调试中的问题,初步完成课程设计报告。1.4上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(c语言版)清华大学出版社 19992 严蔚敏 数据结构题集(c语言版)清华大学出版社 19993 徐宝文等译 c语言程序设计 清华大学出版社4 与所用编程环境相配套的c语言或c+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一一 年 一 月 十 日目 录第一章 概述1第二章 系统分析2第三章 概要设计3第四章 详细设计4第五章 运行与测试9第六章 总结与心得13参考文献14第一章 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。在这次的课程设计中我选择的题目是图书管理。传统的人工图书管理,基本业务活动有对一本书的采编入库、清除库存、借阅和归还等等,但是人工统计操作起来效率相对来说要低,也容易出错。但是现在这些业务借助计算机系统完成后,效率可以得到提高,也可以减少出错的几率。可以使图书管理的日常业务更加的方便,迅捷,减少很多劳动量。课程设计的目的意义:加深对循环队列和数组的理解,以及对循环队列和数组的实际应用,加强自己的动手操作能力,增加对课程的兴趣,而不是枯燥的看课本。课程设计的问题:敢死队问题 有m个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。 排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。第二章 系统分析1 敢死队问题包括:两个数据的输入,一个是队员的数量,另一个是模拟的形式。由于问题给出的数数的数量为5 ,所以k 值就默认为5 ,不再设置数据输入。故重点是要完成两种数据结构形式的删除,循环标记等操作。2 演示程序是以用户于计算机的对话方式执行,这需要调用一个清屏函数来完成使用者与计算机语言之间界面的处理。3 程序执行时的命令:本程序为了使用时的方便,采用阿拉伯数字的方式来完成程序的等各种选择输入,几乎不用输入什么特殊的命令。(要注意输入时必须用数字,否者可能会引起一些死循环)5. 测试数据。 1 5 13 数据运行结果 在第五章有详细的截图第三章 概要设计1. 数据结构类型: 一种是循环队列,另一种是数组形式 其中循环队列操作只需要删除操作,用数组形式处理和运算上则较复杂些 因此,循环队列占优势2. 程序总体上分为两大块,一块是循环队列的模拟,一块是数组形式的模拟 这两种形式功能都是模拟每个开始数数的位置对员的死亡顺序,其中循环 队列的函数接口为: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 coutdatanext; 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) /循环找开始的位置 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.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位置不安全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(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 标记来代替 删除操作,在循环数数的时候经常认为是5 ,但是 循环只需要进行4 次即可。而删除操作的判断则用sum 总和进行判断,替换循环判断,省时!操作方便,在4 层循环数数操作中容易漏 data 为0 的判断以及 对 key 的变相取余3.测试数据 1 5 13 第6章 总结与心得 通过这一课程设计,加深了我对数据结构这门课程所学内容的进一步的理解与掌握;同时,通过对循环队列和数组的应用,使得我将计算机课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,培养了我开发一个中小型程序的能力。调程序的时候,要稳扎稳打,每个子函数单调试后在和主函数链接,效率较高,不然都最后全在一块,给调程序会带来极大的不便!对于每个子函数都要考虑到一些特殊值。最大的收获还是感觉到数据结构的实用性,不像看课本和考试那样,总是参生厌烦情绪,离开发一些东西越来越近了,而不像以前那样很遥远。总之,在这个的课程设计中,我的收获还是挺大的,不仅对于专业课有了更好的认识,而且还学到做事要细心、全面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024河南省三门峡中等专业学校工作人员招聘考试及答案
- 2024洞口县凤凰职业技术学校工作人员招聘考试及答案
- 护理工作计划2025
- 租赁合同范本-铲车租赁专用
- 网络安全保障协议:企业信息安全防护合同
- 软件开发与维护合同模板
- 数控加工工艺与编程试题(含参考答案)
- 农业与财务管理的结合
- 研学基地参加创业比赛全程纪实
- 维保安全培训
- 项目运营管理中的风险防控和应对
- 姓氏文化杨姓
- 基于单片机的停车场计数系统设计
- 《体育保健学》课件-第三章 运动与营养
- 公司法务管理手册全部程序葵花宝典
- 新教科版科学五年级下册第二单元测试卷含答案
- 弱电工程施工进度表(甘特图)
- 大航海时代4威力加强版各种宝物遗迹
- 舞台灯光安装施工方案
- 五年级下册综合实践活动说课稿-合理消费 全国通用
- GB/T 10000-2023中国成年人人体尺寸
评论
0/150
提交评论