簡體   English   中英

這是雙向鏈表方法,對嗎? (消除)

[英]Is this doubly linked list method, correct? (Remove)

remove(range){
    if(range === 0){
        return this.shift();
    }
    else if(range == this.length){
        return this.pop();
    }
    else if(range < 0 || range > this.length ){
        return undefined
    }
    else{
        const temp = this.get(range);
        const after = temp.next;
        const before = temp.prev;
        before.next = after;
        after.prev = before;
        temp.next = null;
        temp.prev = null;
        this.length--;
        return temp;
        
    }
}

我在雙向鏈表中編寫了這個remove方法,它有效,但我不確定它是否總體正確。

本質上是一個問題:

鏈表中最后一個節點的索引不是this.length而是this.length - 1 例如,如果一個鏈表有兩個節點,它的長度為 2,節點的索引為 0 和 1。

所以這部分代碼:

    else if(range == this.length){
        return this.pop();
    }
    else if(range < 0 || range > this.length ){
        return undefined
    }

應改為:

    else if(range == this.length - 1){
//                              ^^^^
        return this.pop();
    }
    else if(range < 0 || range >= this.length ){
//                             ^^
        return undefined
    }

沒問題,但是名稱 范圍選擇得不好,因為它暗示了一對

例如,帶符號的 16 位 integer 變量的范圍是從 -32,768 到 +32,767 的所有整數。

在您的情況下,此參數是單個 integer 表示目標節點的基於 0 的 position,名稱index應該是首選。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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