[英]How can I remove a specified node from a linked list?
我已經做了一個remove方法,可以從單鏈列表中刪除一個對象。
到目前為止,該方法可以毫無問題地刪除第一個節點和第二個節點。 當刪除第三個節點並繼續時,該方法將刪除指定節點與頭節點之間的所有內容。 我的問題是如何使我的方法刪除指定的節點,而不是刪除它之前的所有內容?
我知道我需要保留對上一個節點的引用,以便將其下一個節點分配給指定的節點下一個節點。 這將縮小間隙並刪除節點。 我了解邏輯,但似乎無法實現。
public class List_test{
public Node head;
public List(){
head = null;
}
public List(Node head_) {
this.head = head_;
Node ref = head;
}
public void remove(Node node) {
Node ref= head;
if (ref.equals(node)) {
head = head.next;
return;
}
while (ref != null) {
if (ref.equals(node)) {
head.next = node.next;
}
ref = ref.next;
}
}
public static void main(String[] args) {
new List_test();
}
為了刪除節點,為什么要更改頭指針? 您應該使用上一個節點,並將其指向要刪除的節點的下一個節點。
我認為此頁面對此主題有很好的解釋: 刪除鏈表c / c ++,java,python中的節點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.