【数据结构】C++代码实现 约瑟夫环
我的第一篇博客,也不知道怎么说,实验课留的题目,直接上代码
Josephus环问题
问题描述:
约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。
基本要求:
利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。
测试数据:
m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序应为6,1,4,7,2,3,5)。
#include<iostream>
using namespace std;
typedef struct lnode
{
int data;
int num;
struct lnode* next;
}LNode, * LinkList; //链表
LinkList Creat(int n)
{
LinkList L = NULL; //不带头结点的链表
LNode*
这篇博客介绍了如何使用C++代码解决约瑟夫环问题。问题描述为人们围成圈,按照顺时针方向报数,报到特定数值m的人出列,其密码成为新的m值,直至所有人出列。博主提供了基本要求和测试数据,强调利用单向循环链表存储结构来模拟这一过程。
最低0.47元/天 解锁文章
7867

被折叠的 条评论
为什么被折叠?



