猴子选大王课程设计报告材料Word文档格式.docx

上传人:b****0 文档编号:12958997 上传时间:2022-10-01 格式:DOCX 页数:10 大小:63.27KB
下载 相关 举报
猴子选大王课程设计报告材料Word文档格式.docx_第1页
第1页 / 共10页
猴子选大王课程设计报告材料Word文档格式.docx_第2页
第2页 / 共10页
猴子选大王课程设计报告材料Word文档格式.docx_第3页
第3页 / 共10页
猴子选大王课程设计报告材料Word文档格式.docx_第4页
第4页 / 共10页
猴子选大王课程设计报告材料Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

猴子选大王课程设计报告材料Word文档格式.docx

《猴子选大王课程设计报告材料Word文档格式.docx》由会员分享,可在线阅读,更多相关《猴子选大王课程设计报告材料Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

猴子选大王课程设计报告材料Word文档格式.docx

二:

概念设计

三:

详细设计

四:

调试分析和测试结果

五:

总结

六:

源代码

:

一堆猴子都有编号,编号是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(离开的猴子所报的数):

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

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1