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