簡體   English   中英

如何從鏈表中刪除指定的節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM