作业帮 > 综合 > 作业

在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/05 11:08:44
在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码
一、问题描述
在控制台下实现约瑟夫环.
编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值 m,从第一个人开始按顺时针方向自1开始报数,报到 m时停止报数.报m的人出列,将他的密码作为新的 m 值,从他在顺时针方向上的下一个人开始重新报数,如此下去,直至所有人全部出列为止.试设计一个程序求出出列顺序.
二、基本要求
(1)m 的初值由用户输入,n值可以由用户输入也可从读入的文件中统计.
(2)每个人应至少包含的信息:姓名、编号、密码.
(3)参照线性表的实现完成此程序.
(4)打印”约瑟夫环“的初始顺序信息,含有编号、姓名、密码.
(4)用户可选择按姓名或按编号打印出列顺序.
(6)本题提交整个程序的实现代码.
四、测试数据
(1) m = 57,n = 19
(2) m = 65 ,n = 16
(3) m = 32 ,n = 20
(4) m = 101, n = 55
(5) m = 1001 ,n = 28
五、实现提示
(1) 可参照已经实现的的“动态顺序表”或“动态单链表“选择一个适当的存储结构模拟此过程;
(2) 参加“约瑟夫环”游戏的每一项为一个结点,数据类型ElemType为结构体,包含三个数据成员:姓名、编号和密码;
(3) 出列时考虑对第一项和最后一项的作特殊处理.
在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码
#include
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
typedef int Status;
typedef double ElemType;
//-----------------------------------
//定义单向循环链表
typedef struct LNode
{
int number;
int data;
struct LNode *next;
}LNode, *LinkList;
//-----------------------------------
LinkList EvaluList(int n);//对单向循环链表进行尾插入赋值
int size(LinkList L);//求链表的节点个数
Status ScanList(LinkList L);//遍历单向循环链表
Status Joseph(LinkList &L,int m);//约瑟夫环的实现
//-------------------------------------------------
void main()
{
int m,n;
coutn;
cout
约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数.从第一个 设编号从1,2,...,n的n个人围坐一圈,约定编号为k(1 新的 猴子选大王 代码 猴子选大王 功能:设编号为1,2,3,……,n的n(n>0)个猴子按顺时针方向围坐 约瑟夫环 已知n个人围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列,m是什么 数据结构课程设计:设有n个人围坐在一个圆桌周围,编号为1,2,…,n.现在从第s个人开始逆序报数,即:第s个 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人 C 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一 原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,……,n.从编号是1 的人开始报数 2.约瑟夫环的实现:设有n个人围坐在圆桌周围,现从某个位置 i 上的人开始报数,数到 /*3、约瑟夫问题约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到 约瑟夫问题:n个骑士编号1,2,.,围坐圆桌旁找出最后留在圆桌旁的骑士编号(1)编 猴子选大王n只猴子围坐成一个圈,按顺时针方向从1到n编号.然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,