约瑟夫环的代码求解
帮我看一下错在哪里?谢谢你们啦!实在不知道错在哪!应该是算法错误,可是我想不通错在哪?请帮帮我!#include <stdio.h>
#include <stdlib.h>
typedef struct node
{ int data;
struct node *next;
} Lnode;
Lnode *create(int n)
{ int i;
Lnode *h,*p,*r=(Lnode *)malloc(sizeof(Lnode));
r->data=n;
for(i=n-1;i>=0;i--)
{ p=(Lnode *)malloc(sizeof(Lnode));
p->data=i;
h=p;
}
return h;
}
voidjeseph(Lnode *p,int m)
{ Lnode *q;
int j=0;
printf("outqueue order:");
while(p->next!=p)
{ j++;
if(j==m-1)
{ q=p->next;
p->next=q->next;
printf("%d",q->data);
j=0;
free(q);
}
p=p->next;
}
printf("%d\n",p->data);
free (p);
}
void main()
{ Lnode *h;
int m,n;
printf("input :");
scanf("%d,%d",&n,&m);
h=create(n);
jeseph(h,m);
}
页:
[1]