//test1.cpp
#include
using namespace std;
int m,n,k,i,j;
int a[]={};
template
struct Node
{
int data;
struct Node*next;
};
template
class Clinklist
{
public:
void Set(T a[],int n);
void Delete();
void Move();
~Clinklist();
private:
Node*rear;
Node*p;
Node*q;
Node*r;
};
template
void Clinklist::Set(T a[],int n)
{
rear->next=rear;
p=rear;
for(i=n-1;i>=0;i--)
{
Node *s=new Node;
s->data=a[i];
rear->next=s;
s->next=r;
r=s;
}
}
template
void Clinklist::Delete()
{
if(p->next==rear)
{
q=p->next;
p->next=rear->next;
rear=p;
p=p->next;
delete q;
n=n-1;
}
else
{
q=p->next;
p=p->next;
delete q;
n=n-1;
}
}
template
void Clinklist::Move()
{
if(i<=n-m-1){i=i+m-2;}
if(i>=n-m){i=i+m-2-n;}
for(j=0;j<=m-3;j++)
{p=p->next;}
cout<
}
template
Clinklist::~Clinklist()
{
p=rear->next;
if(rear->next!=rear)
{
q=p->next;
delete p;
p=q;
}
else
delete rear;
delete p;
delete q;
}
int main()
{
cout<
cin>>m;
cout<
if(m<1)
{
cout<
cout<
cin>>m;
cout<
}
cout<
cin>>n;
cout<
if(n<1)
{
cout<
cout<
cin>>n;
cout<
}
cout<
cin>>k;
if(k<1||k>n)
{
cout<
cout<
cin>>k;
}
int a[n];
for(i=0;i++;i<=n-1){a[i]=i+1;}
i=k;
Clinklist Joseph();
while(n>1)
{
Joseph.Move();
Joseph.Delete();
}
Joseph.~Clinklist();
system("pause");
return 0;
}