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属性。

双向链表提供了两种迭代列表的方法:从头到尾,或者反过来。我们也可以访问一个特定节点的下一个或前一个元素。在单向链表中,如果迭代列表时错过了要找的元素,就需要回到列表起点,重新开始迭代。这是双向链表的一个优点。

发布了72 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hongyu799/article/details/104119432