链表创建结构的问题!!!!!!

图片说明

typedef struct student

{

int score;

struct student next; //创建一个链表,包含数据和指针

} LinkList;

//创建一个列表

LinkList *CreateList(int n)

{

int i;

LinkList *head,*node,*end; //定义一个头结点

head=(LinkList)malloc(sizeof(LinkList)); //给头结点申请内存

end=head; //

end->next=NULL; //链表最后一个结点的指针为空

for(i=0;i<n;i++) //循环创建链表

{

  node=(LinkList*)malloc(sizeof(LinkList));

node->score=i; //给结点数据赋值

end->next=node;

printf("第 %d 个节点的数值:%dn",i,node->score);

node->next=NULL;

end=node;

}

return head;

}

int main()

{

LinkList *phead;

phead=CreateList(3);

}

回答

循环创建链表时的node是一个孤立的新申请空间的指针

node->score=i; 是给这个新的孤立的指针赋值

end->next=node;是把链表里最后一块空间和这个新申请的空间(指针)连接起来

node->next=NULL;是把这个指针的next域初始化置为空,前面已经把指针的score数据赋值过了

然后node的数据域和next都初始化有值之后,node已经被链接到链表上了,成为链表最后一个元素

然后end=node;

即更新end让它指向链表最后一个元素

帮到你的话采纳一下

以上是 链表创建结构的问题!!!!!! 的全部内容, 来源链接: utcz.com/a/30141.html

回到顶部