js實現雙向鍊錶
functiondoublylinkedlist() ;
var length = 0,
head = null
;
//向尾部追加
(element)
else
previous.next =node
node.prev =previous
}length ++;
return
true
; }
//指定位置插入
this.insert = function
(position, element)
else
}else
if (position !=length)
previous.next =node;
node.prev =previous;
}length ++;
return
true
; }
else
}; //刪除指定位置元素
this.removeat = function
(position)
else
if(position === length - 1)
else
}; length--;
return
current.element;
}else
}; //刪除值為element的所有元素
this.removeele = function
(element)
previous =current;
current =current.next;
while
(current)
current=current.next;
length--;
num++;
}else
}return
num;
}; //刪除尾部
this.remove = function
() ;
var current =head,
previous;
if (length === 1)
while
(current.next)
previous.next = null
; length--;
return
current.element;
}; //當前元素的其實位置
this.indexof = function
(element) ;
current =current.next;
index++;
}return
false
; };
//是否為空
this.isempty = function
() ;
//鍊錶長度
this.size = function
() ;
//轉成字串
this.tostring = function
()
return
string;
}; //獲取頭結點元素
this.gethead = function
() ;
//獲取未結點元素
this.gettail = function
()
return
previous.element;
}; }let mylink = new
doublylinkedlist();
mylink.insert(3, 'd')
mylink.insert(5, 'f')
mylink.insert(0, 'g')
console.log(mylink.tostring())
//gabcdef
mylink.removeat(0) //
刪除gmylink.removeat(5) //
刪除fconsole.log(mylink.remove()) //
刪除econsole.log(mylink.tostring()) //
abcd
向尾部增加d
console.log(mylink.tostring()) //
abcdd
console.log(mylink.removeele('d')) //
刪除所有d,列印刪除d的個數 2
console.log(mylink.tostring()) //
abcconsole.log(mylink.indexof('b')) //
列印b的位置 1
console.log(mylink.size()) //
列印鍊錶的長度 3
console.log(mylink.gethead()) //
aconsole.log(mylink.gettail()) //
c
雙向迴圈鍊錶:將雙向鍊錶的頭尾指標相連,就構成了雙向迴圈鍊錶。這種鍊錶從任意乙個節點都可以同時向兩個方向進行節點遍歷。
JS實現雙向鍊錶
每個結點包含三部分,指向前乙個結點的指標 pre 指向後乙個節點的指標 next 以及自己的資料部分 element 於是我們就可以先寫出結點物件 function node 定義結點物件 function node element 然後我們開始實現插入鍊錶的演算法 宣告 下面函式中的this是我們...
JS實現單向鍊錶 雙向鍊錶 迴圈鍊錶
鍊錶儲存有序的元素的集合,但是和陣列不同的是,鍊錶中的元素在記憶體中的儲存並不是連續的。每乙個鍊錶元素都包含了乙個儲存元素本身的節點和乙個指向下乙個元素的引用。看起來就像這樣 相對於傳統的陣列,鍊錶的乙個好處就是增刪的時候無需移動其它元素,只要更改指標的指向就可以了。但是缺點就是如果想要訪問鍊錶中的...
JS 雙向鍊錶
雙向鍊錶 雙向鍊錶 單鏈表只能從頭節點開始訪問鍊錶中的資料元素,如果需要逆序訪問單鏈表中的資料元素將極其低效。從鍊錶的頭節點遍歷到尾節點很簡單,但反過來從後向前遍歷則沒那麼簡單。通過給node物件增加乙個屬性,該屬性儲存指向前驅節點的鏈結,這樣就容易多了。此時,向鍊錶插入乙個節點需更多的工作,需指出...