C++链表解决约瑟夫问题
问题描述
设有编号为1,2,…,n(n>0)个人围成一个圈,每个人持有一个密码。初始的报数上限为m,从第1个人开始报数,报到m时停止报数,报m的人出圈。取出圈者的密码作为新的报数上限m。再从他的下一个人起重新报数,报到m的人出圈,…,如此下去,直到所有人全部出圈止。当任意给定n和初始m后,设计算法求n个人出圈的次序。
实现代码
//使用 Visual studio 2017 编码环境
#include<iostream>
using namespace std;
typedef struct node //节点结构体
{
int passiword; //节点密码
struct node *next; //指向下一个节点的指针
}Node;
class linklist
{
priva