作业帮 > 综合 > 作业

编号为 1,2,----,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始人选一个正整数作为报数上限值

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/06 02:57:04
编号为 1,2,----,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始人选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止.试设计程序求出出列顺序.
基本要求:
利用单向循环链表存储结构模拟次过程,按照出列的顺序打印个人的编号.
忘了说了:用c语言实现
以前自己做的.
/*
编号为1、2..n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数),
一开始任选一个正整数作为报数的上限值m,从第一个人开始自1开始报数,报到m停止
,报m的人出列,将他的密码作为新的m值,从下一个人开始重新报数,直至所有人全部
出列为止,设计一个出列顺序.
*/
#include
struct Node
{
int data;
struct node *next;
};
void main()
{
int i=0,j=0; //循环变量
int n,m; //n表示输入的人数 m表示初始密码
struct Node *head,*p1,*p2; //head链表头节点、p1、p2构建链表的临时节点
printf("请输入人数:");
scanf("%d",&n);
head = p1 = (struct Node*)malloc(sizeof(struct Node)); //分配一个空间,将head、p1指向该空间
while (idata);
p1 = (struct Node*)malloc(sizeof(struct Node));
p2->next = p1;
i++;
}
printf("请输入第%d个人的密码:",i+1); //给最后一个节点赋值
scanf("%d",&p1->data);
p1->next = head; //将最后一个节点的next指向头节点,构成循环单链表
i = 0;
p2 = head;
while (idata);
p2 = p2->next;
i++;
}
printf("请输入一个密码:");
scanf("%d",&m);
p2 = p1;
while(jdata);
p2->next = p1->next;
m = p1->data;
p1 = p2;
j++;
}
}
约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数.从第一个 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人 C 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一 设编号从1,2,...,n的n个人围坐一圈,约定编号为k(1 数据结构课程设计:设有n个人围坐在一个圆桌周围,编号为1,2,…,n.现在从第s个人开始逆序报数,即:第s个 猴子选大王n只猴子围坐成一个圈,按顺时针方向从1到n编号.然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局, 原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,……,n.从编号是1 的人开始报数 新的 猴子选大王 代码 猴子选大王 功能:设编号为1,2,3,……,n的n(n>0)个猴子按顺时针方向围坐 C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 C语言循环链表的题,有N个同学,编号分别为1,2,3……,N,围成一圈,随便选定一个整数m,让大家按顺时针依次报数,报到 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,