C语言的链表创建问题,我在知道里提问了,希望你能给予指点。谢谢……!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:43:58
LIST *creat()
{
LIST *head = NULL;
LIST *prev, *current;
char index;
int node;

printf("Do you want to create how many nodes?\n");
printf("Please input node's number: ");
while(1 != scanf("%d", &node))
getchar(); //创建node的个数

for(index = 0; index < node; index++)
{
current = (LIST *)malloc(sizeof(LIST)); //分配新的node地址
if(head == NULL)
head = current; //空表建立的时候
else
prev->next = current; //非空表
current->next = NULL;
scanf("%d %d", ¤t->num, ¤t->age);
prev = current; //更新老node的地址
}
return head;
}
问题补充:请高手解释一下例子中for循环内链表的创建过程尤其是else语句之后的!

current = (LIST *)malloc(sizeof(LIST)); //分配新的node地址
if(head == NULL)
head = current;
else
prev->next = current; /*如果head非空,说明这个链表已经存在,现在要将新建的节点链接到这个链表上,上一次循环时,prev已经指向上一个结点,所以这一句就可以将当前循环创建的结点链接到这个链表的结尾。*/
current->next = NULL;/*将当前的链表尾设为NULL*/
scanf("%d %d", & current->num, ¤t->age);/*为刚接入的结点赋值*/
prev = current; //更新老node的地址

来自:求助得到的回答