猴子选大王课程设计报告材料Word文档格式.docx
- 文档编号:12958997
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:10
- 大小:63.27KB
猴子选大王课程设计报告材料Word文档格式.docx
《猴子选大王课程设计报告材料Word文档格式.docx》由会员分享,可在线阅读,更多相关《猴子选大王课程设计报告材料Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
二:
概念设计
三:
详细设计
四:
调试分析和测试结果
五:
总结
六:
源代码
:
一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
输入数据:
输入m,nm,n为整数,n<
m。
输出形式:
中文提示按照m个猴子,数n个数的方法,输出为大王的
猴子是几号,建立一个函数来实现此功能。
1.输入数据m,n。
2.计算出最终猴子大王的序号。
3.模拟出整个过程
4.找到合适的数据结构处理这个问题。
5.找到正确的方法解决这个问题。
这个问题属于约瑟夫环问题,根据问题描述得知,该问题中m个猴
子围坐在一群形成首尾相接的环,因此可用循环链表解决。
从第n
个猴子开始出列相当于从链表中删除一个节点。
该程序主要有三个模块组成,建立循环链表,报数利用循环链表实现猴子的出列,最终剩下的猴子即猴王。
具体步骤如下:
第一步首先创建循环链表。
第二步向链表中填入猴子的编号。
第三步找第一个开始报数的猴子。
第四步数到n让这个猴子出列。
第五步接着开始报数,重复第四步,直到剩下最后一个猴子,
就是大王。
程序流程图如下:
进行1-m的报数
删除第n只猴子
剩下的猴子数是否为1
输出猴子大王的序号
结束
1.程序中使用的存储结构
structL
(
intnum;
structL*next;
};
intn;
inti=0;
2.程序中使用的循环结构
structL*LisDelete(structL*head,intm)//报数为m的退出.
structL*p,*q;
intj=0;
p=head;
i=i+1;
if(p->
next==head)return(p);
while(j<
m-2)
p=p->
next;
j=j+1;
}
q=p->
p->
next=q->
head=p->
printf("
%d第%d个猴子离开.\n”,i,q->
num);
free(q);
LisDelete(head,m);
3.主函数
voidmain()
structL*head;
structL*p;
intm,N;
*********************************************************\n"
);
猴子选大王:
\n"
一堆猴子都有编号,编号1,2,3...m,这群猴子(m个)按照
1-m\n"
的顺序围坐一圈,从第1开始数,每数到第n(n<
m)个,该猴子就要\n"
离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,贝U该\n"
printf(-猴子为大王\n"
scanf(”%d”,&
N);
scanf("
%d"
&
m);
***********************************\n"
if(m>
N||m<
=0||N<
=0)
ERROR();
else
if(m==1)
printf(-结果:
第%d个猴子为大王.\n"
N);
}else(
head=creat(N);
过程:
p=LisDelete(head,m);
printf('
*********************************
**\n"
结果:
p->
M
XM
XX
n孔一玉食)-嘲<
m后君m曰时这n<
Ff
$编开执口蚤一'
编从衣有,依都Hi
.,子一这
王猴尝-一"
§
1^通-隹为于顺开于一猴lai高猴
新;
5昴开物行附谜教X5将猴=顺序编号为,
第5个输子匿互・舅询-潦丰度开*弟板%强孑高开.篇20八猱干离开*第溯宇嵩并.
第12八给离开.第]"
癖子离开.
莫4个归离开.
H-开开开形辛一
S?
离遂思电甫演着一r_r言一r.r演着声?
|子子「〒?
孑于了子了一了干候5-»
-(.「?
fi-N—klwl?
m31-l16-2fl^l<
511261141云glr<
缶rg'
「丁ra.r寻r君wll算笄算第笋重芽洋算™穿穿B芽
=工_.工_-TT-+ZTTTT-参胡离离A
01234567R9-
右果犀新书S子为大王.
*nykeyto
得到了预期的结果
本次课程设计,参考了相关教科书和参考书对二分法查找与各种排序方法的描述,对相关功能所需结构体和函数有了初步构思之后,经过代码的输入、语法改错,调试执行等过程,完成了一个简单的功能系统。
通过一周时间,从初步思路形成到基本功能完成,对数据结构设计实践与应用部分基本了解了。
从本次课程设计我觉得我应该把所学基础知识与具体问题实践结合,基本知识要扎实,对待问题要各方面分析。
数据结构与算法设计是一种锻炼人活晰思路的科目,我们应该通过多次实践让自己的知识得到巩固。
#include<
stdio.h>
malloc.h>
#defineNULL0
#defineLENsizeof(structL)
structL*creat(intN)//建立动态循环链表.
将猴子顺序编号为:
structL*p1,*p2;
n=0;
p1=p2=(structL*)malloc(LEN);
p1->
num=1;
%d"
p1->
head=NULL;
while(p1->
num<
=N)
n=n+1;
if(n==1)head=p1;
elsep2->
next=p1;
p2=p1;
p1=(structL*)malloc(LEN);
num=n+1;
if(p1->
p2->
next=head;
//尾指针指向头指针.
return(head);
{
%d第%d个猴子离开.\n”,i,q->
ERROR()
m>
N或者m<
=0或者N<
=0!
!
ERROR!
voidmain()(
一堆猴子都有编号,编号1,2,3...m,这群猴子(m个)按照
输入n(所有猴子的总数):
"
输入m(离开的猴子所报的数):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 猴子 大王 课程设计 报告 材料