#include "stdio.h"
#include <stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *link;
}LNode,*LinkList;
void JOSEPHUS(int n,int m,int k)
{
LinkList p ,r,list=NULL;
int i;
//r=list;
for(i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
p->data=i;
if (list==NULL)
{
list=p;
}
else
{
r->link=p;
}
r=p;
}
p->link=list; //完成循环链表
p=list;
for(i=1;i<k;i++)//从第k个人开始报数
{
r=p;
p=p->link;
}
while (p->link!=p)
{
for(i=1;i<m;i++)
{
r=p;
p=p->link;
}
r->link=p->link;
printf("M\n",p->data);
free(p);
p=r->link;
}
printf("M\n",p->data);
//free(p);
}
void main()
{
JOSEPHUS(8,4,3);
}