zoukankan      html  css  js  c++  java
  • js实现双向链表, 双向链表需要增加一个previous属性

    双向链表,
    双向链表需要增加一个previous属性
    /*双向链表
    * */
    function Node(element) {
        this.element = element;
        this.next = null;
        this.previous = null;//双向链表在这里需要增加一个previous属性
    }
    
    function LList() {
        this.head = new Node("head");
        this.find = find;
        this.insert = insert;
        this.display = display;
        this.remove = remove;
        this.findLast = findLast;
        this.dispReverse = dispReverse;//将链表反转
    }
    
    function dispReverse() {
        var currNode = this.head;
        currNode = this.findLast();
        var nodestr = "";
        while (!(currNode.previous == null)) {
            nodestr += " "+currNode.element;
            currNode = currNode.previous;
        }
        console.log("将链表反转后: "+nodestr);
    }
    
    function findLast() {
        var currNode = this.head;
        while (!(currNode.next == null)) {
            currNode = currNode.next;
        }
        return currNode;
    }
    
    function remove(item) {
        var currNode = this.find(item);
        if (!(currNode.next == null)) {
            currNode.previous.next = currNode.next;
            currNode.next.previous = currNode.previous;
            currNode.next = null;
            currNode.previous = null;
        }
    }
    
    // findPrevious is no longer needed
    /*function findPrevious(item) {
     var currNode = this.head;
     while (!(currNode.next == null) &&
     (currNode.next.element != item)) {
     currNode = currNode.next;
     }
     return currNode;
     }*/
    
    function display() {
        var currNode = this.head;
        var nodestr = "";
        while (!(currNode.next == null)) {
            nodestr += " "+currNode.next.element;
            currNode = currNode.next;
        }
        console.log(nodestr);
    }
    
    function find(item) {
        var currNode = this.head;
        while (currNode.element != item) {
            currNode = currNode.next;
        }
        return currNode;
    }
    
    function insert(newElement, item) {
        var newNode = new Node(newElement);
        var current = this.find(item);
        newNode.next = current.next;
        newNode.previous = current;//双向链表在这里需要设置新节点previous属性
        current.next = newNode;
    }
    
    
    var cities = new LList();
    cities.insert("Conway", "head");
    cities.insert("Russellville", "Conway");
    cities.insert("Carlisle", "Russellville");
    cities.insert("Alma", "Carlisle");
    cities.display();//Conway Russellville Carlisle Alma
    cities.remove("Carlisle");
    cities.display();//Conway Russellville Alma
    cities.dispReverse();// Alma Russellville Conway
  • 相关阅读:
    [CF833B] The Bakery
    [CF1203F1] Complete the Projects
    [CF354C] Vasya and Beautiful Arrays
    [CF7D] Palindrome Degree
    [CF1466F] Euclid's nightmare
    【转】node-webkit:开发桌面+WEB混合型应用的神器
    (转)background-position—CSS设置背景图片的位置
    (转)国外漂亮表格连接地址
    URL转义
    T-SQL实用查询之常用SQL语句
  • 原文地址:https://www.cnblogs.com/baiyangyuanzi/p/6689531.html
Copyright © 2011-2022 走看看