我在这里试图将节点添加到单链接列表
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.next != null
时终止,终止后头将指向链表中的最后一个节点,当您执行head.next = s
时,它将向现有列表添加新节点。
在第二个代码中,while循环在head == null
时终止,终止后头将指向null
。所以现在您正在分配head = s
,所以头将指向新创建的节点,并且它不会附加到您的原始列表中。
通过一步一步的调试应该很简单,我想这就是学习它的方法……尝试在while循环和下一行放置断点(直接将值分配给head
(,并检查变量的值(主要是用于调试的F8键(。。。