| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1267 人关注过本帖
标题:链表动态分配空间,看了很久了看不明白,这是函数的一部分,主要是这个不懂 ...
只看楼主 加入收藏
S3232
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-11-15
收藏
 问题点数:0 回复次数:3 
链表动态分配空间,看了很久了看不明白,这是函数的一部分,主要是这个不懂,有没有大佬给我一点比较详细的解释啊,非常感谢
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);
}
搜索更多相关主题的帖子: head 比较 函数 链表 NULL 
2021-11-17 15:34
S3232
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-11-15
收藏
得分:0 
书上说p2=p1是指向尾节点,为什么指向尾节点不用p2=p1->next?
2021-11-17 16:16
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
收藏
得分:0 
int i=0;
struct STU *head =NULL,*p1,*p2;
while(i<n){
p1=(struct STU*) malloc(LEN);//p1指向新申请的空间
p1–>next = NULL;//由于是加到原链表尾部,故新元素的下一个元素初始化为空
scanf("%s%f",p1->num,&p1->score);
if(head == NULL){//head仅初始化时为空,在while(i<n)循环中会变的
head = p1;//由于初始链表为空,所以新元素做为头,此时head不为空了
p2= p1;//p2用来临时记录链表尾部元素
}
else{
p2->next =p1;//如果链表非空,那么就找到链表尾部,将链表尾部的下一个元素设置为新元素
p2= p1;//更新p2链表尾部元素为新元素
}
i++;
}
return(head);
}
2021-11-17 16:55
S3232
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-11-15
收藏
得分:0 
谢谢大佬耐心解答
2021-11-18 14:36
快速回复:链表动态分配空间,看了很久了看不明白,这是函数的一部分,主要是这个 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072931 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved