动态链表一个不理解的地方。
# include <stdio.h># include <stdlib.h>
struct Stu
{
int num;
double score;
Stu * next;
};
int main(void)
{
void print(Stu * q);
int n;
Stu * p1, * p2, * head=NULL;
p1=(Stu *)malloc(sizeof(Stu));
scanf("%d,%lf", &p1->num, &p1->score);
for (n=0; (p1->num)!=0;)
{
++n;
if (n==1)
head=p1;
else
p2=p1;
p1=(Stu *)malloc(sizeof(Stu));
scanf("%d,%lf", &p1->num, &p1->score);
if ((p1->num)!=0)
p2->next=p1;//这里由于我的疏忽,没有为p2分配一个动态存储空间,但是发现运行后第一次输入num,score竟然没事,为什么?按理说应该会出错的吧?
else
p2->next=NULL;
}
print(head);
return 0;
}
void print(Stu * q)
{
Stu * mo=q;
for (;(mo->next)!=NULL; mo=mo->next)
printf("%d, %lf", mo->num, mo->score);
}