一、雙向鏈表和普通鏈表的區別
在鏈表中,一個節點只有鏈向下一個節點的鏈接,而在雙向鏈表中,鏈接是雙向的:一個鏈向下一個元素,另一個鏈向前一個元素,如下圖所示:
二、 實現DoublyLinkedList類
function DoublyLinkedList(){
var Node = function (element){
this.element = element;
this.next = null;
this.prev = null;//新增的
};
var length = 0;
var head = null;
var tail = null;//新增的
}
在代碼中可以看到,LinkedList類和DoublyLinkedList類之間的區別標爲新增的。在Node類裏有prev屬性(一個新指針),在DoublyLinkedList類裏也有用來保存對列表最後一項的引用的tail屬性。
雙向鏈表提供了兩種迭代列表的方法:從頭到尾,或者反過來。我們也可以訪問一個特定節點的下一個或前一個元素。在單向鏈表中,如果迭代列表時錯過了要找的元素,就需要回到列表起點,重新開始迭代。這是雙向鏈表的一個優點。