早教吧作业答案频道 -->其他-->
数据结构试验设计上老师提出了一个问题,关于线性结构的应用,约瑟夫环问题小弟才疏学浅,约瑟夫问题的一种描述是:编号为1,2,...,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正
题目详情
数据结构试验设计上老师提出了一个问题,关于线性结构的应用,约瑟夫环问题 小弟才疏学浅,
约瑟夫问题的一种描述是:编号为1,2,...,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报道m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止.设计程序求出出列顺序.
基本要求:
利用单项循环链表储存结构模拟其过程,按照出列的顺序打印个人编号.
约瑟夫问题的一种描述是:编号为1,2,...,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报道m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止.设计程序求出出列顺序.
基本要求:
利用单项循环链表储存结构模拟其过程,按照出列的顺序打印个人编号.
▼优质解答
答案和解析
#include
struct list//建立一个结构体,包括每个人的编号,密码和下一级的指针
{
int id;
struct list *next;
};
list* input(int n)//链表的初始化
{
list *p,*q,*l;
int i,m;
p=new list;
l=new list;
l->next=NULL;
p=l;
p->id=1;//第一个人的初始化
for(i=2;iid=i;
q->next=NULL;
p->next=q;
p=q;
}
p->next=l;//使表尾指向表头,成循环链表
return p;
}
int main()
{
int num,m1,i;
list *q,*p;
printf("输入人数:");
while(scanf("%d",&num)!=EOF)
{
printf("密码为:");
scanf("%d",&m1);
p=input(num);
printf("最后一人序号为:");
while(p->next!=p)
{
for(i=1;inext;
}
q->next=p->next;
delete p;
p=q;
}
printf("%4d",p->id);
delete p;
printf("\n");
}
}
struct list//建立一个结构体,包括每个人的编号,密码和下一级的指针
{
int id;
struct list *next;
};
list* input(int n)//链表的初始化
{
list *p,*q,*l;
int i,m;
p=new list;
l=new list;
l->next=NULL;
p=l;
p->id=1;//第一个人的初始化
for(i=2;iid=i;
q->next=NULL;
p->next=q;
p=q;
}
p->next=l;//使表尾指向表头,成循环链表
return p;
}
int main()
{
int num,m1,i;
list *q,*p;
printf("输入人数:");
while(scanf("%d",&num)!=EOF)
{
printf("密码为:");
scanf("%d",&m1);
p=input(num);
printf("最后一人序号为:");
while(p->next!=p)
{
for(i=1;inext;
}
q->next=p->next;
delete p;
p=q;
}
printf("%4d",p->id);
delete p;
printf("\n");
}
}
看了 数据结构试验设计上老师提出了...的网友还看了以下:
n和N的关系是啥呀.为什么得出n>[ε/1-ε]之后,N就取[ε/1-ε]这个数呀?然后n>N之后 2020-05-13 …
已知数列{a(n)}中,a(1)=2,a(n)-a(n-1)-2n=0(n≥2,n∈N),设Bn= 2020-05-21 …
多边形的题设正多边形的边数为n(n≥3),每一个内角的度数为y.(1)求y关于n的关系式(2)求正 2020-05-24 …
关于循环语句的,会的来帮个忙!定义1*2*3*…*N为N的阶乘,记作N!设计一个求N!的算法,并写 2020-06-05 …
下列词语中加点字的注音完全正确的一组是()A.嗔视(chēn)抽搐(chù)哽咽(gěn)断壁残垣 2020-07-01 …
湘教版教材解析必修4,56页知识点三:等差数列前n项和公式与函数的关系我们已经知道,等差数列的前n 2020-07-06 …
几道集合的填空题已知M,N是两个非空集合,且对于M中的任何一个元素x,都有x¢N,则M、N的关系是 2020-08-01 …
数学归纳法的一个困惑?第二数学归纳法原理是设有一个与自然数n有关的命题,如果:(1)当n=1时,命 2020-08-01 …
设集合W是满足下列两个条件的无穷数列{an}的集合:①;②an≤M,其中n∈N*,M是与n无关的常 2020-08-02 …
设集合M={x|x=(kπ/2)+(π/4),k∈Z},N={x|x=(kπ/4)+(π设集合M={ 2021-01-13 …