一.约瑟夫环问题
使用单链表解决约瑟夫环问题,基本思想:
设置一个计数器count和工作指针p和q,当计数器累加到m时,删除结点p。为了能够让计数器从1开始计数,将采用尾指针指示的循环单链表,q指向p结点的前驱结点。
#include<iostream>
using namespace std;
struct Node //定义约瑟夫环的结点Node
{
int data;
struct Node *next;
};
class JosephRing
{
public:
JosephRing( ); //构造函数,初始化空循环链表
JosephRing(int n); //构造函数,初始化n个结点的环
~JosephRing( ); //析构函数,同单链表析构函数
void Joseph(int m); //密码为m,打印出环的顺序
private:
Node