如何在链表的最后一个添加值。当我运行代码时,addAtLast(( 方法不返回更新的列表。最后一个值(即 50(不会添加到返回的列表中。
public Node addAtLast(Node head, int data) {
Node temp = head;
Node newNode = new Node(data);
while (null != temp)
temp = temp.next;
temp = newNode;
System.out.println(temp);
return head;
}
......
这里 :
temp = newNode;
您将新元素分配给从未与 linkedlist 关联的temp
变量,因为分配对变量的引用会使其指向新事物。
此外,您需要停止迭代,因为当前元素没有下一个元素,而不是当前元素null
。否则,您不会保留引用最后一个元素的方法,而是null
.
你应该写这样的东西:
while (temp.next != null)
temp = temp.next;
// here temp refers the last element of the chain as it doesn't have next element
temp.next = newNode;
temp = newNode;
对原始链表没有影响。
为了在列表末尾添加Node
,您必须找到最后一个Node
,这是temp.next == null
的第一个Node
。然后,修改该Node
temp.next
以引用新Node
。
public Node addAtLast(Node head, int data) {
if (head == null) { // handle adding the first Node
return new Node(data);
}
Node temp = head;
Node newNode = new Node(data);
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
System.out.println(temp);
return head;
}