添加到链表时遇到问题,两个看似相同的代码给出了截然不同的结果
facing problem while adding to a linked list, two seemingly identical codes are giving very different results
我在这里尝试将节点添加到单链表
SinglyLinkedListNode s = new SinglyLinkedListNode(data);
if(head == null){SinglyLinkedList a = new SinglyLinkedList();
a.head = s;
return a.head;}
else{
SinglyLinkedListNode a = head;
while(head.next != null){
head = head.next;}
head.next = s;
return a;
}
这个有效,但如果我这样做 -
SinglyLinkedListNode s = new SinglyLinkedListNode(data);
if(head == null){SinglyLinkedList a = new SinglyLinkedList();
a.head = s;
return a.head;}
else{
SinglyLinkedListNode a = head;
while(head != null){
head = head.next;}
head = s;
return a;
}
列表现在只包含一个节点
一步一步调试应该很简单,我想这就是学习它的方法...尝试将断点放在while循环和下一行(直接赋值给head
), 并检查变量的值(主要是用于调试的 F8 键)...
在您的第一个代码中,while 循环在 head.next != null
时终止,终止后 head 将指向链表中的最后一个节点,当您执行 head.next = s
时,它会将新节点附加到您现有的列表中。
在您的第二个代码中,while 循环在 head == null
时终止,终止后 head 将指向 null
。所以现在你正在分配 head = s
所以 head 将指向新创建的节点并且它不会附加到你的原始列表中。
我在这里尝试将节点添加到单链表
SinglyLinkedListNode s = new SinglyLinkedListNode(data);
if(head == null){SinglyLinkedList a = new SinglyLinkedList();
a.head = s;
return a.head;}
else{
SinglyLinkedListNode a = head;
while(head.next != null){
head = head.next;}
head.next = s;
return a;
}
这个有效,但如果我这样做 -
SinglyLinkedListNode s = new SinglyLinkedListNode(data);
if(head == null){SinglyLinkedList a = new SinglyLinkedList();
a.head = s;
return a.head;}
else{
SinglyLinkedListNode a = head;
while(head != null){
head = head.next;}
head = s;
return a;
}
列表现在只包含一个节点
一步一步调试应该很简单,我想这就是学习它的方法...尝试将断点放在while循环和下一行(直接赋值给head
), 并检查变量的值(主要是用于调试的 F8 键)...
在您的第一个代码中,while 循环在 head.next != null
时终止,终止后 head 将指向链表中的最后一个节点,当您执行 head.next = s
时,它会将新节点附加到您现有的列表中。
在您的第二个代码中,while 循环在 head == null
时终止,终止后 head 将指向 null
。所以现在你正在分配 head = s
所以 head 将指向新创建的节点并且它不会附加到你的原始列表中。