《约瑟夫生死者游戏课程设计报告》由会员分享,可在线阅读,更多相关《约瑟夫生死者游戏课程设计报告(9页珍藏版)》请在毕设资料网上搜索。
1、 课程设计报告 设计题目:设计题目: 约瑟夫生死者游戏约瑟夫生死者游戏 姓姓 名:名: * 学学 号:号: * * 专业班级:专业班级: 计算机科学与技术计算机科学与技术 06010601(本)(本) 系系 (院) :院) : 信息工程学院信息工程学院 设计时间:设计时间: 20122013 学年第学年第一一学期学期 设计地点:设计地点: 成绩:成绩: 数据结构课程设计报告 2 / 9 课程设计目的课程设计目的 1、能够更灵活地应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解 指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
2、3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在 此过程中培养他们严谨的科学态度和良好的工作作风。 5.由于现在市场上的加密很为重要,故应当做一个相关的程序,用来解决日常文章的加密与解密工作 课程设计任务与要求:课程设计任务与要求: 问题描述问题描述 约瑟夫(Joeph)问题的一种描述是:编号为 1,2,n 的 n 个人按顺时针方向围坐一圈,每人持有一个 密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人开始按顺时针方向自 1 开始顺序报 数,报到 m 时停止报数。报 m
3、 的人出列,将他的密码作为新的 m 值,从他在顺时针方向上的下一个人开始重 新从 1 报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。 基本要求基本要求 利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。 测试数据测试数据 m 的初值为 20;密码:3,1,7,2,4,8,4(正确的结果应为 6,1,4,7,2,3,5)。 实现提示实现提示 程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。设 n30。 一一 需求分析需求分析 这是一个典型的循环单链表问题, 也是它的一个很有实际应用的问题。 在这里关键的问题便是循环单链 表的构建,还应该知道元素
4、出表的顺序,以及释放空间后的循环单链表。 二二 概要设计概要设计 由于这歌程序用到循环单链表,所以需要根据所需而自定义个结构 LNode 。因为该程序功能只有 一个,所以只需要一个主函数和一个被调用的子函数 Joeph_problem 即可。为了使得函数看起 来清晰易懂,而将函数写的简单,所以主函数里只需输入所需要的人数 n 和初始上限值 m,然 后调用子函数 Joeph_problem 即可。而在子函数 Joeph_problem 里需要分为两个部分:创建循环单 链表(即输入每个人所持密码)和运行输入出列的顺序。为了使得可以用户多次选择,又调用 while 循环, 由用户可以随时选择继续或者
5、退出。 程序运行中,为了保持屏幕的清楚和美观,时刻进行清屏也是必要的。 循环单链表的定义如下: struct LNode int number; int password; struct LNode *next; LNode,*p,*q,*head; 数据结构课程设计报告 3 / 9 子函数 Joeph_problem 的算法如下: int Joeph_problem(int n,int m) int i,j; for(i=1;inext=q; p=q; printf(“请输入第%d 人的密码:“,i); scanf(“%d“, p-number=i; p-next=head; /*形成循环链表*/ p=head; printf(“出列顺序为:“); for (i=1;inumber); m=p-password; p-number=p-next-number; /*删除报 m 的节点*/ p-password=p-next-password; q=p-next; p-next=p-next-next; free(q); return OK; 三三 详细设计详细设计 /*主函数的算法如下:*/ int main() int select,n,m,i; while(1) 数据结构课程设计报告 4 / 9 printf(“请输入人数 n(n30|nnumber=i; p-