链表动态分配空间,看了很久了看不明白,这是函数的一部分,主要是这个不懂,有没有大佬给我一点比较详细的解释啊,非常感谢
int i=0;struct STU *head =NULL,*p1,*p2;
while(i<n){
p1=(struct STU*) malloc(LEN);
p1–>next = NULL;
scanf("%s%f",p1->num,&p1->score);
// 结构体里面num是一个数组,score是整型变量。
if(head == NULL){//提问:在定义head的时候就已经是空的了,为啥还要判断head是不是为null
head = p1;//这儿完全看不懂,为啥p1给了head,p1还能给p2
p2= p1;
}
else{
p2->next =p1;//这里也是,哎好蒙
p2= p1;
}
i++;
}
return(head);
}