约瑟夫环的问题,不知道哪里出的错,大家来帮忙看一下
应该是挺简单的问题,算法也都会,就是不知道是哪里出了错,
呵呵,好久没碰C语言了,大家来帮我看一下
编译的时候没有问题,运行的时候直接进入死循环,程序如下:
//用链表实现Joseph环
typedef struct LNode{//定义节点
int n,m;
struct LNode *next;
}LNode,*Linklist;
void Joseph(int code, LNode *l){
//Joseph环的功能实现
LNode *p1=l;
while(p1!=0){
while(--code)p1=p1->next;
printf("d%,",p1->n);
code=p1->m;
p1=p1->next;
free(p1);
}
}
main(){
int n,m,t;
LNode *p,*last,*l=0;
printf("The total number of the people is");
//接受用户输入的数据并存入链表
scanf("d%",&n);
p=(Linklist)malloc(sizeof(LNode));
last=p;
t=n;
while(t>0){
printf("Please input the secert code of the d% people.",t);
scanf("d%",&m);
p->next=l;
p->n=t;
p->m=m;
l=p;
p=(Linklist)malloc(sizeof(LNode));
t--;
}
free(p);
last->next=l;
printf("Please input the first code.");
scanf("d%",&m);
Joseph(m,l);
}