JavaScript數據結構與算法學習筆記之雙向鏈表(1)

一、雙向鏈表和普通鏈表的區別

在鏈表中,一個節點只有鏈向下一個節點的鏈接,而在雙向鏈表中,鏈接是雙向的:一個鏈向下一個元素,另一個鏈向前一個元素,如下圖所示:

二、 實現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屬性。

雙向鏈表提供了兩種迭代列表的方法:從頭到尾,或者反過來。我們也可以訪問一個特定節點的下一個或前一個元素。在單向鏈表中,如果迭代列表時錯過了要找的元素,就需要回到列表起點,重新開始迭代。這是雙向鏈表的一個優點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章