#include<stdio.h>
#include<stdlib.h>
struct list
{
int num;
int code;
struct list *next;
};
struct list *creatList(int n){ //创建循环链表
struct list *p,*s,*head; //head头结点、s创建链表、p
int i,key;//key为密码
head=(struct list *)malloc(sizeof(struct list));
p=head;
for(i=1;i<=n;i++){
key=rand() % 100;
s=(struct list *)malloc(sizeof(struct list));
s->num=i;
s->code=key;
printf("第%d个人的密码:%d\n",s->num,s->code=key);
p->next=s;
p=s;
}
s->next=head->next;
s=head;
head=head->next;
free(s);
s=head;
return head;
}
void josephRing(struct list *p,int n){ //约瑟夫出列问题
struct list *head,*s;
int i,m=1,key;
printf("\n\n输入第一个报的数:\n");
scanf("%d",&key);
head=(struct list *)malloc(sizeof(struct list));
head=p;
while(n>0){
for(i=1;i<key;i++){
s=p; // ①
p=p->next;}
printf("%d:第%d号成员出列\n",m,p->num);
key=p->code;
m=m+1;
s->next=p->next; // ②
head=p->next;
free(p);
p=head;
n=n-1;
}
}
void main(){
struct list *A;
int n;
printf("Joseph问题求解算法的设计与实现\n \n");
printf("输入人的总个数:");
scanf("%d",&n); //n为人数
A=creatList(n);
josephRing(A,n);
} //为什么我把①②
删掉 运行的话就有bug了???求解