#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node *next;
Node()
{
data=0;
next=NULL;
}
};
void Josephus(int n,int k,int m)
{
if(n<0||k<0||m<0)
return ;
Node *pnode,*prenode,*curr;
pnode=new Node();
pnode->data=1;
pnode->next=pnode;
curr=pnode;
for (int i=2;i<=n;i++)
{
Node *temp=new Node();
temp->data=i;
temp->next=curr->next;
curr->next=temp;
curr=temp;
}
prenode=curr;
while(k--)
{
prenode=pnode;
pnode=pnode->next;
}
while(n--)
{
for(int s=m;--s;prenode=pnode,pnode=pnode->next);
prenode->next=pnode->next;
cout<<pnode->data<<" ";
delete(pnode);
pnode=prenode->next;
}
};
void main()
{
Josephus(10,3,3);
system("pause");
}
using namespace std;
class Node
{
public:
int data;
Node *next;
Node()
{
data=0;
next=NULL;
}
};
void Josephus(int n,int k,int m)
{
if(n<0||k<0||m<0)
return ;
Node *pnode,*prenode,*curr;
pnode=new Node();
pnode->data=1;
pnode->next=pnode;
curr=pnode;
for (int i=2;i<=n;i++)
{
Node *temp=new Node();
temp->data=i;
temp->next=curr->next;
curr->next=temp;
curr=temp;
}
prenode=curr;
while(k--)
{
prenode=pnode;
pnode=pnode->next;
}
while(n--)
{
for(int s=m;--s;prenode=pnode,pnode=pnode->next);
prenode->next=pnode->next;
cout<<pnode->data<<" ";
delete(pnode);
pnode=prenode->next;
}
};
void main()
{
Josephus(10,3,3);
system("pause");
}