如何正确更新链表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何正确更新链表相关的知识,希望对你有一定的参考价值。

假设我有两个类,object1和object2。我想在object2的实例中将object1实例添加到链表的末尾(也就是说,将object1添加到链表的方法是在object2类中)。假设链表已经有一个对象,为什么以下不更新我的链表:

object1 a = firstObject1;
while(a != null) {
    a = a.next;
}
a = b;

其中b是调用add方法的对象。要清楚,我得到的问题是,当我打印链表中每个对象的id时,我看不到新对象。

注意:这实际上是家庭作业,所以我不能使用辅助方法或导入库。

答案

这里的问题是将本地变量a设置为新节点b将超出此块结尾的范围,导致不添加新节点。这样做的正确方法是检查a.next何时是null所以你可以将a.next设置为b

object1 a = firstObject1;

while (a.next != null) {
    a = a.next;
}

a.next = b;
另一答案

您需要将a.next设置为b以获取最后一个aa = b基本上什么都不做,因为a是一个局部变量。

object1 a = firstObject1;
while(a.next != null) { // find the last a, the one which does not has a next
    a = a.next;
}
a.next = b; // set the next of the last a

另外,请开始给你的课程更有意义的名字,不要在其中加上数字,让它们以大写字母开头。

以上是关于如何正确更新链表的主要内容,如果未能解决你的问题,请参考以下文章

一文讲透链表操作,看完你也能轻松写出正确的链表代码

一文讲透链表操作,看完你也能轻松写出正确的链表代码

addToBackStack 没有导航回正确的片段

如何正确地将多个片段添加到片段过渡?

Rails:旧数据与新数据不匹配时如何更新片段缓存

05 链表(下):如何轻松写出正确的链表代码?