#include "CircList.h"
template<class T>
void Josephus(CircList<T> &Js,int n,int m) //n---总数,m---目标数
{
CircLinkNode<T> *p = Js.GetHead()->link,*pre = NULL;
for (int i = 0;i < n-1;++i) //执行n-1次
{
for (int j = 1;j < m;++j) //数m个人
{
pre = p;
p = p->link;
if(p == Js.GetHead())
{
p = p->link;
pre = pre->link;
}
}
cout<<"出列的人是:"<<p->data<<endl;
pre->link = p->link;
delete p;
p = pre->link;
if(p == Js.GetHead())
{
p = p->link;
pre = pre->link;
}
}
}
void main()
{
CircList<int> clist;
int n,m;
cout<<"输入游戏者人数和报数间隔:";
cin>>n>>m;
for(int i = 1;i <= n;++i)
clist.Insert(i-1,i);
Josephus(clist,n,m);
}