这是慕课网上边的c语言结构体里面的课程,为什么第19行将p2->next 的指正指向了p1的地址,随后又初始化p2,这样不是直接吧p2->next的地址就不指向p1了不是么,求大神解答!
1 回答
kevinZee
TA贡献50条经验 获得超39个赞
他把p1p2换来换去看上去确实有点难理解。
他的意思其实就是创建一个链表,利用一个变量来缓存和不断更新尾节点的指针
我在你这个函数的基础上简单调整了一下,可能更便于你的理解
struct weapon * create(){
struct weapon * head = NULL;
struct weapon * tail = (weapon *) malloc(sizeof(struct weapon));
scanf("%d %d",&(tail->price),&(tail->atk));
int n = 0;
while(tail->price != 0){
n++;
if(n == 1){
head = tail;
}else{
//创建一个新的节点
struct weapon * new_tail = (weapon *) malloc(sizeof(struct weapon));
scanf("%d %d",&(new_tail->price),&(new_tail->atk));
new_tail->next = NULL;
//将这个新节点和当前的尾节点相连
tail->next = new_tail;
//更新尾节点指针
tail = new_tail;
}
}
return head;
}- 1 回答
- 0 关注
- 1534 浏览
添加回答
举报
0/150
提交
取消
