学习c语言的一个疑问

这是慕课网上边的c语言结构体里面的课程,http://img.mukewang.com/5a1d66e90001394009720469.jpg为什么第19行将p2->next 的指正指向了p1的地址,随后又初始化p2,这样不是直接吧p2->next的地址就不指向p1了不是么,求大神解答!

不会说话的鱼
浏览 1421回答 1
1回答

kevinZee

他把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; }
打开App,查看更多内容
随时随地看视频慕课网APP