主题:[讨论]数据结构课题设计"猴子选大王问题"
anewch
[专家分:0] 发布于 2007-06-27 10:14:00
问题描述] n只猴子要选大王,选举方法是:所有猴子按1,2,…,n编号围坐一圈,从第1号开始按1,2,…,m报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。
[基本要求] 分别选择顺序表和单向循环链表作为存储结构模拟整个过程,并依次输出出列的各猴子的编号和最终所选出猴王的编
回复列表 (共3个回复)
沙发
songwq [专家分:1200] 发布于 2007-06-27 11:11:00
如果m=3 那几号是大王?
板凳
虎虎虎1986 [专家分:180] 发布于 2007-06-29 01:08:00
#include <iostream.h>
struct List
{
int date;
struct List *next;
};
void InitList(struct List **head)
{
*head=NULL;
}
void fndList(struct List **head,int max)
{
int i;
*head=new List;
struct List *point1,*point2;
point1=*head;
point1->date=1;
point1->next=NULL;
for(i=1;i<max;i++)
{
point2=new List;
point1->next=point2;
point1=point1->next;
point1->date=i+1;
}
point1->next=*head;
}
void TraverseList(struct List *head,int Max)
{
int i;
for(i=1;i<Max;i++)
{
cout<<head->date<<" ";
head=head->next;
}
cout<<head->date<<endl;
}
void OutList(struct List **head,int a,int b)
{
struct List *point,*flag;
int i;
point=*head;
for(i=1;i<b;i++)
point=point->next;
while(point!=point->next)
{
for(i=1;i<a;i++)
point=point->next;
flag=point->next;
cout<<endl;
cout<<flag->date<<"号猴子被淘汰"<<endl;
point->next=flag->next;
//delete point;
flag=flag->next;
}
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"恭喜"<<flag->date<<"号猴子是大王"<<endl;
delete flag;
}
void main()
{
int m,n,p;
struct List *top;
cout<<"请输入猴子的数量m:"<<endl;
cin>>m;
cout<<"你想从第几只猴子开始报数"<<endl;
cin>>p;
cout<<"你想报数为第几的猴子出列"<<endl;
cin>>n;
InitList(&top);
fndList(&top,m);
TraverseList(top,m);
OutList(&top,n,p);
}
这是一个单循环链表的程序。
3 楼
coolingxyz [专家分:60] 发布于 2007-06-29 14:40:00
浙江省自学考试办公室数据结构辅导网站全部flash(完全Action script实现)动画模拟课件
下载地址:[url=http://www.shujujiegou.cn/uploadfile/200902/17/922266813.rar]http://www.shujujiegou.cn/[/url]
http://www.shujujiegou.cn/uploadfile/200902/17/922266813.rar
2002年我和同学一起做的[浙江省自学考试办公室数据结构网站]的课件,全部用as实现的数据结构算法的动画模拟.
现在我们做的网站访问量一直比较不错.得到了大家的好评.同时很多大学的老师也在用这些课件教学生,经常有很多大学里计算机系的学生来问我这方面的问题.
我的qq还是 21156410 .如果有问题可以联系我.同时我这里把这些课件整理出来供大家一次性下载.谢谢大家支持.(不含论文).
我来回复