直接上代码:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#define ERROR 0;
typedef struct Lnode{
int data;
struct Lnode *link;
}Lnode,*LinkList;
void Josephus(int n,int k,int m){//n为总共的人数,k是第一个报数的人,m为数到的数
LinkList p,r,head,curr;
p=(LinkList)malloc(sizeof(Lnode));
p->data=0;
p->link=p;
curr=p;
for(int i=1;i<n;i++){
LinkList t=(LinkList)malloc(sizeof(Lnode));
t->data=i;
t->link=curr->link;
curr->link=t;
curr=t;
}
r=curr;
while(k--)
r=p,p->link;
while(n--){
for(int s=m-1;s--;r=p,p=p->link);
r->link=p->link;
printf("%d->",p->data);
free(p);
p=r->link;
}
}
int mian(){
Josephus(13,4,1);
}