|
10鱼币
本帖最后由 科科都不挂 于 2020-8-12 12:55 编辑
这是C语言S1E46单链表2课上的例题:
在这个代码中,我不解的是,我将addBook函数中的部分代码修改了一下,但是结果却截然不同。检查了好几遍,我感觉逻辑上也过得去,语法也没错。希望各位帮帮忙!!!
- temp = *library; //将temp指向头指针
- while (temp != NULL) //验证temp的第一个值是不是NULL
- {
- temp = temp->next; //如果不是NULL,则给他指向下一个值的地址
- }
- temp = book; //将NULL的地址指向新书
- book->next = NULL; //book后面的地址指向NULL
复制代码
其它代码与原代码完全一致,唯独改了三处。将temp->next 改为了temp.
temp->next=NULL时循环退出,此时是最后一个元素,然后把最后一个元素的指针域指向book这一个节点,这个节点不为NULL,然后再把book->next的指针域初始化为NULL,
你自己写的是当temp->next=NULL时你没有把这个指针去指向新添加的书籍,反而让temp = NULL,也就是一个一个未初始化新的节点,上一本书的指针域并没有指向新添加的书籍,这就导致你的链表永远只有一本书,
|
最佳答案
查看完整内容
temp->next=NULL时循环退出,此时是最后一个元素,然后把最后一个元素的指针域指向book这一个节点,这个节点不为NULL,然后再把book->next的指针域初始化为NULL,
你自己写的是当temp->next=NULL时你没有把这个指针去指向新添加的书籍,反而让temp = NULL,也就是一个一个未初始化新的节点,上一本书的指针域并没有指向新添加的书籍,这就导致你的链表永远只有一本书,
|