以下是引用viky2003在2007-8-5 17:01:23的发言:
void print(struct student *head);这函数应该放到main外面声明!!!错误1!!!
head=t2=t1=(struct student*) malloc(LEN);//三个指针指向同一个地址。。。。。
scanf("%s,%s",head->num,head->name);
t1->num[10]='\0';//这是什么阿??没有必要吧
if (t1->num!="stop")
{
t1=t2->next=( struct student*) malloc(LEN);
scanf("%s,%s",t1->num,t1->name);
t1->num[10]='\0';
t2=t1;
}
else
t1->next=NULL;
print(head);
}
程序没有可读性!!!创建链表方法很多很多!!
还是这样吧:
struct student *phead,*t1=NULL;
phead=(struct student *)malloc(LEN);
scanf("%s,%s",phead->num,phead->name);
phead->next=NULL;
while(phead->num!="stop")
{
t1=(struct student *)malloc(LEN); 只要首节点的num不是stop创建两个节点一个首节点一个t1尾节点。
scanf("%s,%s",t1->num,phead->name);
t1->next=NULL;
break;
}
phead->next=t1;
print(phead);
谢谢大哥拉,这么认真的看我这么乱的程序.我现在已经知道我错在那里了,思路错了,呵呵,我已经改过来了.
"head=t2=t1=(struct student*) malloc(LEN);//三个指针指向同一个地趾":这确实没必要!
"t1->num[10]='\0';//这是什么阿??没有必要吧":似乎是没必要,但如果不加的话输出时,就会多输出一个",",我也不知道为什么.