小白求教~约瑟夫问题不知道错在哪 为什么只能输出123456
#include<stdio.h>#include<stdlib.h>
#define N 6
typedef struct person
{
int number;
struct person *next;
}person;
int main()
{
int i,count=0,n=0;
person *head,*p1,*p2,*p;
head=p1=p2=(person*)malloc(sizeof(person));
head=NULL;
//创建链表并给每个结点的成员标号
for(i=1;i<=N;i++)
{
p1=(person*)malloc(sizeof(person));
p1->number=i;
p2->next=p1;
p2=p1;
printf("%d ",p1->number);
}
p1->next=head->next;
p2=NULL;
printf("\nsequence that persons leave the circle:\n");
//喊到3的号码置为0
while(count<N-1)
{
i=0;
while(i!=3)
{
p1=p1->next;
if(p1->number)
i++;
}
printf("%d",p1->number);
p1->number=0;
count++;
}
printf("\nthe last one is:\n");
//输出号码不为0的一个
for(i=1;i<=N;i++)
{
p1=p1->next;
if(p1->number)
printf("%3d",p1->number);
}
printf("\n");
return 0;
}