生死者游戏——数据结构课设

上传人:第*** 文档编号:55669703 上传时间:2018-10-03 格式:DOC 页数:21 大小:604.01KB
返回 下载 相关 举报
生死者游戏——数据结构课设_第1页
第1页 / 共21页
生死者游戏——数据结构课设_第2页
第2页 / 共21页
生死者游戏——数据结构课设_第3页
第3页 / 共21页
生死者游戏——数据结构课设_第4页
第4页 / 共21页
生死者游戏——数据结构课设_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《生死者游戏——数据结构课设》由会员分享,可在线阅读,更多相关《生死者游戏——数据结构课设(21页珍藏版)》请在金锄头文库上搜索。

1、1 课 程 设 计 报 告 课程名称课程名称 数据结构数据结构 课题名称课题名称 生死者游戏生死者游戏 专专 业业 信息管理与信息系统信息管理与信息系统 班班 级级 1301 学学 号号 201303110125 姓姓 名名 肖宏亮肖宏亮 指导教师指导教师 赵锦元、谢雅、李峰赵锦元、谢雅、李峰 2014 年年 12 月月 18 日日 2 湖南工程学院 课 程 设 计 任 务 书 课程名称 数据结构 课 题 生死者游戏 专业班级 1301 学生姓名 肖宏亮 学 号 21303110125 指导老师 赵锦元、谢雅、李峰 审 批 任务书下达日期 2014 年 11 月 25 日 任务完成日期 201

2、4 年 12 月 18 日 3 一一、设设计计内内容容与与设设计计要要求求 1 1设计内容:设计内容: 问题描述 每 N(Nk)个旅客同乘一条船,因为严重超载,加上 风高浪大,危险万分,因此船长告诉乘客,只有将全船一半的旅客投入海 中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并拟定 N 个人 围城一圈,由第一个人数起,依次报数,数到第 k 人,便把他投入大海中, 然后再从他的下一个人数起,数到第 k 人,再将他扔进大海中,如此循环 地进行,直至剩下 N/2 个乘客为止。问哪些位置是将被扔进大海的位置。 基本功能 (1)实时显示每仍一个旅客之前,按序号从小到大的顺序显示当前 在船上的旅客

3、的编号。 (2)变换 N 和 k 的值,看显示结果是否仍然正确。 2 2设计要求:设计要求: 1) 设计正确,方案合理。 2) 界面友好,使用方便。 3) 程序精炼,结构清晰。 4) 设计报告 5000 字以上,含程序设计说明、系统的功能框图、流程图、 源程序清单等。 5) 实际操作过程中遇到的问题及解决方法:设计总结及心得体会。 6) 上机演示。 二、二、进进度度安安排排 第 15 周 星期二 14 时:00 分17 时:30 分 星期三 14 时:00 分17 时:30 分 星期四 14 时:00 分17 时:30 分 4 第 16 周 星期二 14 时:00 分17 时:30 分 星期三

4、 14 时:00 分17 时:30 分 星期四 14 时:00 分17 时:30 分 附: 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4 大小的图纸及程序 清单) 。 正文的格式:一级标题用 3 号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为 22。 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图) ;三、 主要功能的实现(至少要有一个主要模块的流程图) ;四、程序调试;五、总结;六、附件 (所有程序的源代码,要求对程序写出必要的注释) 。 正文总字数要求在 5000 字以上(不含程序源代码) 。 5 目目 录录 1.系统需求分析1 1.

5、1 问题描述1 1.2 功能要求1 2.概要设计1 2.1 系统总体设计1 2.2 各模块的功能1 3. 详细设计.2 3.1 采用 c 语言定义相关的数据结构2 3.2 mian()函数2 3.3 CreateList()函数4 3.4 DispList()函数5 3.5 ListDelete()函数6 3.6 函数关系调用图7 4. 系统调试及运行结果.8 4.1 程序调试中的问题8 4.2 运行结果 8 5.心得与体会9 6.附录.10 6.1 源代码.10 6.2 参考文献 .15 7.评分表.16 0 1.系统需求分析 1.1 问题描述问题描述 每 N(Nk)个旅客同乘一条船,因为严

6、重超载,加上风高浪大, 危险万分,因此船长告诉乘客,只有将全船一半的旅客投入海中, 其余人才能幸免遇难。无奈,大家只得同意这种办法,并拟定 N 个人围城一圈,由第一个人数起,依次报数,数到第 k 人,便 把他投入大海中,然后再从他的下一个人数起,数到第 k 人,再 将他扔进大海中,如此循环地进行,直至剩下 N/2 个乘客为止。 问哪些位置是将被扔进大海的位置。 1.2 功能要求功能要求 (1)实时显示每仍一个旅客之前,按序号从小到大的顺序显示 当前在船上的旅客的编号。 (2)变换 N 和 k 的值,看显示结果是否仍然正确。 2.概要设计 2.1 系统总体设计系统总体设计 程序共有三个子函数和一

7、个主函数 (1)建立循环单链表 (2)选择生者与死者的函数 (3)输出所有生者的函数 (4)主函数则通过调用这些子函数而达到它所要的结果 2.2 各模块的功能各模块的功能 (1) LinkList *CreateList(LinkList *head)是用尾插法建立单循环链 表的函数,将链表的首尾连起来。这样定义的链表与一般的链表 结构完全一样,数据域用一个整数来表示位置,删除元素时不需 要移动大量元素位置,方便操作。 (2) int ListDelete(LinkList *head,int t)是选择生者与死者的函数, 1 要删除第 k 个节点,必须找到第 k-1 个节点。P 指向第 k-

8、1 个节 点,q 指向第 k 个节点,删除 q-data,再 p-next=q-next,最后 释放 q 节点。 (3) void dispList(LinkList *head)是输出生者序号的函数。 3. 详细设计 3.1 采用采用 c 语言定义相关的数据结构语言定义相关的数据结构 typedef struct LNode /定义结构体 int data; struct LNode *next; LinkList; 3.2 mian()函数函数 用来调用个功能函数,实现参与游戏人数的编号,输出有多少人, 删除死亡的人数,具体程序如下 void main() /主函数 char x=y; /

9、设定游戏是否继续的字符y int t; printf(“t* * “); printf(“nnnnttt-欢迎进入生死者游戏-nnnn“); printf(“t* * nnnn“); system(“pause“); system(“cls“); printf(“nn 游戏规则:n -1.请输入大于 0 的人数以保证 船上的人不为空 -n“); printf(“ -2.请输入的死亡数字限不能大于船上的人数 - 2 n“); system(“pause“); system(“cls“); while(x=y) LinkList *L=NULL; printf(“请输入参与游戏的人数:n“); s

10、canf(“%d“, T=t; while(tT) printf(“输入有误 请重输n“); printf(“请输入参与游戏的人数:n“); scanf(“%d“, T=t; printf(“请输入死亡数字:n“); scanf(“%d“, 3 printf(“*n“); printf(“参与游戏的人员编号如下:n“); L=CreateList(L); /调用创建链表函数 ListDelete(L,t); /调用删除函数 printf(“*n“); printf(“是否继续游戏(是:请输入 y 否:请输入其它)“); getchar(); scanf(“%c“, system(“pause“

11、); system(“cls“); 3.3 CreateList()函数函数 先定义一个始终指向头结点的链表,在定义一个报数 i,如果头 结点为空的话,创建头结点,并将它赋给另外一个头结点为空的 链表 p,头结点已经创建,在创建一个新的链表 q,并把它连接在 头结点之后,具体程序如下 LinkList *CreateList(LinkList *head) /创建循环单链表 LinkList *p,*q=NULL; int i=1; while(idata=i+; p=head; 4 else /当头节点已存在时 q=(LinkList*)malloc(sizeof(LinkList); q-

12、data=i+; p-next=q; p=q; p-next=head; /构成循环单链表 return head; 3.4 DispList()函数函数 在输出循环单链表时,先判断头结点是否为空,在不为空的情况 下,定义一个变量 i,i 从 1 直到 T 开始循环,输出循环单链表, 具体程序如下 void DispList(LinkList *head) /显示循环链表 LinkList *p=head; int i; if(p) /当头结点存在时输出单链表 for(i=1;idata); p=p-next; if(i%10=0) printf(“n“); 5 3.5 ListDelete(

13、)函数函数 在删除循环单链表中结点,我们需要注意的问题是删除的是否为 第一个结点的情况,这种情况则需要单独考虑,再者,我们需要 注意的是由于创建的是一条始终指向头结点的循环单链表,所以 当删除的是第一个结点的时候,我们要将头指针往后移,保持链 表的完整性。具体程序如下 int ListDelete(LinkList *head,int t) /删除单链表 LinkList *p,*q; p=q=head; if(!head) /当头结点为空时 return 0; else /当头结点不为空时 while(Tt/2) DispList(head); printf(“n*n“); if(k=1)

14、/当删除的是第一个 结点时 p=q-next; printf(“n 被扔下海的人为:%3d“,q-data); head=head-next; free(q); q=p; T-; printf(“n 船上剩余人为:n“); else 6 for(int i=1;inext; q=p-next; printf(“n 被扔下海的人为:%3d“,q-data); if(head-data=q-data) head=head-next; p-next=q-next; free(q); T-; p=p-next; printf(“n 船上剩余人为:n“); DispList(head); printf(“n“); return 1; 3.6 函数关系调用图函数关系调用图 主函数 创 建 函 数 删 除 函 数 显 示 函 数 7 4. 系统调试及运行结果 4.14.1 程序调试中的问题程序调试中的问题 (1)程序初具雏形时,存在着几个语法错误,比如说定义结构 体时使

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号