早教吧作业答案频道 -->其他-->
数据结构试验设计上老师提出了一个问题,关于线性结构的应用,约瑟夫环问题小弟才疏学浅,约瑟夫问题的一种描述是:编号为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");
}
}
看了 数据结构试验设计上老师提出了...的网友还看了以下:
labview中while循环中放事件结构的问题?在while循环中放一个事件结构,1:事件结构外 2020-05-13 …
经典题型是什么可以告诉我该如何总结它们吗?马上高一了,时常听说总结经典题型,可是不知道什么样的才算 2020-06-10 …
本金一万元,每次加10%.即1+1.1+1.21+1.331.要到第几次结果才接近50万?求公式, 2020-06-11 …
分解因式x平方+ax时,甲看错了a的值,分解的结果是(x+6)*(x-1),乙看错了b的值,分解的 2020-07-07 …
以s结尾要加ES吗有人说是以SS结尾才加ES那么以O结尾到底怎么才加es为什么go要加es而不是s 2020-07-25 …
为什么近代科学没有在中国产生而诞生于欧洲?——关于李约瑟难题!中国科学界有个“李约瑟难题”这个问题是 2020-11-15 …
得之坦然,失之淡然.心若亲近,言行必如流水般自然;心若疏远,言行只如三秋之树般得之坦然,失之淡然.心 2020-11-15 …
从“不留退路,才有出路”话题中写作文要怎样开头和结尾才最好? 2020-12-27 …
议论文怎么结尾才能凑更多的字啊我写议论文一直都不知道怎么结尾好,考试时我会把作文题目提供的材料改一下 2021-01-04 …
锦瑟这首诗与瑟事无关,实是借瑟隐题的无题之作谈谈你的认识 2021-01-16 …