求大神解答

来源:5-2 Linux C 动态数据结构-动态链表

qq_后知后觉_82

2019-07-16 15:59

n++;

if(n==1){

head = p1;

}else{

p2->next = p1;

}

p2 = p1;

p1 = (struct weapon*)malloc(sizeof(struct weapon));

第一次 把 p1 赋值给head , head 没有next  ,p1 赋值给了 p2;

第二次 把一个新的p1 赋值给了 p2->next = p1; p2 = p1;p2被赋值了两次p2 和head是怎么联系起来的

写回答 关注

1回答

  • 狂person
    2019-07-20 12:05:35
    已采纳

    这是两个问题,首先head在n=1的时候就把p1赋值给它,相当于head指向链头;然后p2的两次赋值含义不一样,因为p2保存的是上一次的节点,p2->next=p1表示把上次保存节点的next指针指向这次分配的节点p1,p2=p1表示用p2把这次产生的节点p1保存起来。

Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118302 学习 · 162 问题

查看课程

相似问题