主题:[求助]关于约瑟夫环的问题,高手帮帮忙吧,急急急~~谢谢~~
约瑟夫环的问题,运行出错,代码如下,请高手帮忙抽空看一下,谢谢~~~~
能够通过编译,但运行的时候就有问题了,麻烦各位了~~~
#include "stdlib.h"
#include "stdio.h"
typedef struct person
{ int num;
int snum;
struct person *next;
}people;
people *p,*q,*first;
int n,usednum;
void main()
{int i;
printf("please input the number of student:");
scanf("%d",&n);
printf("please input the first people:");
scanf("%d",&usednum);
for(i=1;i<=n;i++)
{p=(people *)malloc(sizeof(people));
p->num=i;
printf("\nplease input the password");
scanf("%d",&(p->snum));
if(i==1)
{ first=p;q=0;}
else
q->next=p;
q=p;
}
for(q->next=first,p=first;p->next!=p;p=p->next)
{for(i=1;i<usednum;i++)
{q=p;p=p->next;}
printf("%d ",p->num);
usednum=p->snum;
q->next=p->next;
free(p);
}
printf("%d",p->num);
}
能够通过编译,但运行的时候就有问题了,麻烦各位了~~~
#include "stdlib.h"
#include "stdio.h"
typedef struct person
{ int num;
int snum;
struct person *next;
}people;
people *p,*q,*first;
int n,usednum;
void main()
{int i;
printf("please input the number of student:");
scanf("%d",&n);
printf("please input the first people:");
scanf("%d",&usednum);
for(i=1;i<=n;i++)
{p=(people *)malloc(sizeof(people));
p->num=i;
printf("\nplease input the password");
scanf("%d",&(p->snum));
if(i==1)
{ first=p;q=0;}
else
q->next=p;
q=p;
}
for(q->next=first,p=first;p->next!=p;p=p->next)
{for(i=1;i<usednum;i++)
{q=p;p=p->next;}
printf("%d ",p->num);
usednum=p->snum;
q->next=p->next;
free(p);
}
printf("%d",p->num);
}