typedef struct node
{
int data;
struct node *next;
}LNode,*linklist;
#include <stdio.h>
void create(linklist *jp,int n);
int josephus(linklist jp,int s,int m);
main()
{
linklist jsp;
int n,s,m;
printf("intput n:");
scanf("%d",&n);
create(&jsp,n);
printf("input s,m:");
scanf("%d,%d",&s,&m);
josephus(jsp,s,m);
getch();
}
void create(linklist *jp,int n)
{
int i;
linklist p,pre;
if(n!=0)
{
*jp=(linklist)malloc(sizeof(LNode));
(*jp)->data=1;
(*jp)->next=*jp;
pre=*jp;
for(i=2;i<=n;i++)
{
p=(linklist)malloc(sizeof(LNode));
p->data=i;
p->next=pre->next;
pre->next=p;
pre=p;
}
}
else *jp=0;
}
int josephus(linklist jp,int s,int m)
{
linklist p,pre;
int count;
if(!jp)
{
printf("data error!\n");
return(0);
}
p=jp;
for(count=1;count<s;count++)
p=p->next;
printf("output :");
while(p!=p->next)
{
for(count=1;count<m;count++)
{
pre=p;
p=p->next;
}
printf("%d ",p->data);
pre->next=p->next;
free(p);
p=pre->next;
}
printf("%d\n",p->data);
free(p);
return(1);
}I
{
int data;
struct node *next;
}LNode,*linklist;
#include <stdio.h>
void create(linklist *jp,int n);
int josephus(linklist jp,int s,int m);
main()
{
linklist jsp;
int n,s,m;
printf("intput n:");
scanf("%d",&n);
create(&jsp,n);
printf("input s,m:");
scanf("%d,%d",&s,&m);
josephus(jsp,s,m);
getch();
}
void create(linklist *jp,int n)
{
int i;
linklist p,pre;
if(n!=0)
{
*jp=(linklist)malloc(sizeof(LNode));
(*jp)->data=1;
(*jp)->next=*jp;
pre=*jp;
for(i=2;i<=n;i++)
{
p=(linklist)malloc(sizeof(LNode));
p->data=i;
p->next=pre->next;
pre->next=p;
pre=p;
}
}
else *jp=0;
}
int josephus(linklist jp,int s,int m)
{
linklist p,pre;
int count;
if(!jp)
{
printf("data error!\n");
return(0);
}
p=jp;
for(count=1;count<s;count++)
p=p->next;
printf("output :");
while(p!=p->next)
{
for(count=1;count<m;count++)
{
pre=p;
p=p->next;
}
printf("%d ",p->data);
pre->next=p->next;
free(p);
p=pre->next;
}
printf("%d\n",p->data);
free(p);
return(1);
}I
