费富增E01214108 31猴子选大王.docx
- 文档编号:14610290
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:8
- 大小:88.66KB
费富增E01214108 31猴子选大王.docx
《费富增E01214108 31猴子选大王.docx》由会员分享,可在线阅读,更多相关《费富增E01214108 31猴子选大王.docx(8页珍藏版)》请在冰点文库上搜索。
费富增E0121410831猴子选大王
课程名称:
《数据结构》课程设计
课程设计题目:
猴子选大王
姓名:
费富增
院系:
计算机学院
专业:
计算机科学与技术
年级:
2012
学号:
E01214108
指导教师:
王爱平
2013年9月19日
目录
1课程的目的………………………………………………………………1
2需求分析………………………………………………………………………1
3课程设计报告内容……………………………………………………………1
3.1概要设计……………………………………………………………………1
3.2详细设计……………………………………………………………………1
3.3调试分析……………………………………………………………………8
3.4用户手册……………………………………………………………………8
3.5测试结果……………………………………………………………………8
3.6程序清单……………………………………………………………………8
4小结…………………………………………………………………………8
5参考文献………………………………………………………………8
1.课程设计的目的
(1)熟练使用C语言编写程序,解决实际问题;
(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
2.需求分析
根据问题描述可知,该问题中m个猴子围坐在一起形成首尾相接的环,因此可用循环链表解决。
从第n个猴子开始出列相当于从链表中删除一个结点。
该程序主要有三个模块组成,建立单链表,报数利用for循环实现猴子的出列,最终剩下的猴子即猴王
3猴子选大王的设计
3.1概要设计
具体步骤如下:
第一步首先创建循环链表。
第二步向单链表中填入猴子的编号
第二步找第一个开始报数的猴子
第三步数到n让这个猴子出列。
第四步接着开始报数,重复第三步
流程图:
3.2详细设计
#include
#include
typedefstructNode
{intdata;
structNode*next;
}Node,*LinkList;
intm,n;
LinkListL;
voidCreatLinkList(LinkList*L,intm)
{
Node*p,*q;
inti;
(*L)=(LinkList)malloc(sizeof(Node));
if((*L)==NULL)
{
printf("Memoryallocationfailed");
exit
(1);
}
p=(*L);
p->data=1;
for(i=2;i<=m;i++)
{
q=(LinkList)malloc(sizeof(Node));
if(q==NULL)
{
printf("Mmoryallocationfailed");
exit
(1);
}
q->data=i;
p->next=q;
p=q;
}
p->next=(*L);
}
//选出大王来
voidKing(LinkList*L,intn,intm)
{
Node*p,*q;
intk;
intj=1;p=(*L);
for(;m>1;m--)
{
k=1;
while(k!
=n)
{
p=p->next;
k++;
}
printf("第%d个出队列的是%d号猴子,\n",j++,p->data);
p->data=p->next->data;
q=p->next;
p->next=p->next->next;
free(q);
}
printf("大王是第%d号猴子。
\n",p->data);
}
voidmain()
{system("color1f");
system("modecon:
cols=50lines=30");
intm,n;
LinkListL;printf("请输入猴子总数m,和数到那个猴子出队n:
");
scanf("%d,%d",&m,&n);
CreatLinkList(&L,m);
King(&L,n,m);
system("pause");
}}
3.3调试分析
在利用队列实现每次删除一个数据的设计之中,首先初始化一个空队列,通过voidKing(LinkList*L,intn,intm)函数选出每次应该删除的数据,在编写源程序时遇到函数不可调用,函数在调用时应该严格注意格式,两者应做到一模一样,属于细节问题。
由于N=1的情况比较复杂,程序中对它作了模糊处理,没有复杂化,直接返回猴子的总数作为大王的编号。
详细的功能只有留待新版本的时候再去设计实现,是个不小的挑战哦!
3.4用户手册(略)
3.5测试结果(略)
4总结
通过这次试验看书上的源程序知道可以简简单单的通过两句代码改变显示框的颜色和大小system("color1f");,system("modecon:
cols=50lines=30");,在编写程序是要特别注意细节,最后调试发现有不少细节错误导致程序不通过,所以在调试时要注意细节,细节决定成败。
通过设计调试集合运算器的设计这个实验,懂得设计一个程序要首先有一个清晰的思路,构建清晰的思路后再完善各个小部分。
5、程序清单:
(见附录)
6、参考文献
1严蔚敏,吴伟民编著.数据结构(C语言版)--北京:
清华大学出版社,2007.2严蔚敏,吴伟民米宁编著.数据结构题集(C语言版)--北京:
清华大学出版社,2007.3网上搜索相关程序作为参考
7、程序运行结果
运行截图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 费富增E01214108 31猴子选大王 费富增 E01214108 31 猴子 大王