利用循环链表实现约瑟夫问题的求解
本实验利用循环链表实现约瑟夫问题的求解,通过该程序能够按先后次序输出每一次出列人的编号,从而得出结论
约瑟夫(Joseph)问题如下:
已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。
我们将采用循环链表的方式进行求解。
具体代码如下
头文件:joseph.h
//joseph.h
#ifndef JOSEPH_H
struct Node
{
int Date;
Node* next;
};
class Joseph
{
Node* first;
Node* rear;
int n;
int m;
public:
Joseph();
~Joseph();
void max();
int getmax();
int getn();
void method();
};
#endif
主程序:joseph.cpp
//joseph.cpp
#include