在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码一、问题描述 在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 22:31:34
在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码一、问题描述 在控制台下实现约瑟夫环.编号为1,2,3,……,n 的 n 个人按顺时针方向围坐一圈,每
在控制台下实现约瑟夫环.编号为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 个人按顺时针方向围坐一圈,每人持有一个密码一、问题描述 在控制台下实现约瑟夫环.编号为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