各路大神,c语言,求救了,运行之后没反应#include<stdio.h> #include<s

各路大神,c语言,求救了,运行之后没反应#include<stdio.h>
#include<stdlib.h>

typedef struct node{
int info;
struct node* next;
}linknode,*linklist;

void sl(linklist &L){
linklist T,s;int i;
L = (linklist)malloc(sizeof(linknode));
L->info = 0;
T=L;
for(i = 0;i < 12;i ++){
s=(linklist)malloc(sizeof(linknode));
T->next=s;s->info=0;
T=s;
}
s->next=L;

}

void magic(linklist &L){
int i,number=1;linklist s;
s=L;
s->info=1;
while(number!=14){
number++;
for(i = 0;i<number;i++){
s = s->next;
if(s->info != 0){
s=s->next;
i--;
}
}
if(s->info == 0){
s->info = number;

}
}
}

int main(){
linklist L,t;
sl(L);
magic(L);
t=L;
printf("%d",t->info);
t=t->next;
while(t!=L){
printf("%d",t->info);
t=t->next;
}

system("pause");
return 0;
}

magic函数里面的for语句死循环了,当number=14的时候 for循环始终退不出去,我简单修改了下 如下

void magic(linklist &L){
int i,number=1;linklist s;
s=L;
s->info=1;
while(number!=14){
number++;
if(number>13) break;
for(i = 0;i<number;i++){
s = s->next;
if(s->info != 0){
s=s->next;
i--;
}
}
if(s->info == 0){
s->info = number;

}
}
}追问

谢谢,,为什么退不出?

追答

当number=14时 你的循环链表里面的13个元素,全部已经赋值了,
if(s->info != 0){
s=s->next;
i--;
}
这段代码会一直执行, i永远不会增长,所以for循环无法退出

追问

谢谢!,。我懂了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-29
应经main函数中的
sl(L);
magic(L);
修改为:
sl(&L);
magic(&L);
再将上面的两个函数的形参改为linklist *L;
第2个回答  2013-09-29
第一句#include<stdlib.h>写错了。应该是#include<stdlio.h>追问

我复制错了,,,应该有这句的,,

麻烦帮看下

追答

int main(){
linklist L,t;
sl(L);
magic(L);调用函数时,我真不明白怎么能调用的。实在是我能力有限,不能帮你解答了

第3个回答  2013-09-29
编译通过了?追问

通过了

相似回答