我正在閱讀算法以刪除單個鏈接列表中的最後一個元素。 假設我有一個鏈表對象調用ListNode:如何從Java中單獨鏈接列表中刪除尾部
public class ListNode {
private int data;
private ListNode next;
public ListNode(int data) {
this.data = data;
}
public int getData() {
return this.data;
}
public void setData(int data) {
this.data = data;
}
public ListNode getNext() {
return this.next;
}
public void setNext(ListNode next) {
this.next = next;
}
}
我發現清單中刪除的最後一個節點的方法是:
public ListNode deleteAtTail(ListNode head) {
if (head == null || head.next == null) return null;
ListNode node = head;
while(node.next.next != null) {
node = node.next;
}
node.next = null;
return head;
}
我困惑如何代碼工作,因爲一切是通過「節點」。但是,當返回頭部時,最後一個節點被刪除。 因此,我不知道它是如何工作的,它是否與Java中的「按值傳遞」相關?
但是一切都經歷了變量「節點」而不是「頭」。那麼當將變量「node」的next節點設置爲null時,如何刪除head的最後一個元素。 –
'head'指列表中的第一個節點,它指向第二個節點,它指向第三個節點,....指向最後一個節點的下一個節點,它指向最後一個節點。如果您更改這些指針中的任何一個(例如更改下一個節點的指針),則可以更改列表。 – Eran
非常感謝,我終於發現它爲什麼發生了。 –