zoukankan      html  css  js  c++  java
  • js实现双向链表互联网机顶盒实战应用

    上实战代码:

    linkedlistnode.js 节点类

    /*
    * 链表节点
    */
    Dare.LinkedListNode = function () {
      this.data = null;//数据域
      this.prev = null;//前驱
      this.next = null;//后驱
    };
    Dare.extend(Dare.LinkedListNode, Dare);
    Dare.LinkedListNode.prototype.getValue = function () {
      return this.data;
    };
    Dare.LinkedListNode.prototype.setValue = function (obj) {
      this.data = obj;
    };
    Dare.LinkedListNode.prototype.getPrev = function () {
      return this.prev;
    };
    Dare.LinkedListNode.prototype.setPrev = function (node) {
      this.prev = node;
    };
    Dare.LinkedListNode.prototype.getNext = function () {
      return this.prev;
    };
    Dare.LinkedListNode.prototype.setNext = function (node) {
      this.prev = node;
    };

    linkedlist.js 链表类

    /*
    * 双向链表
    */
    Dare.LinkedList = function () {
      this.head = null;
      this.current = null;
      this.tail = null;
      this.length = 0;
    };
    Dare.extend(Dare.LinkedList, Dare);
    /*
    * 尾插法添加节点
    */
    Dare.LinkedList.prototype.appendNode = function (node) {
      if (this == null) return;
      if (node == null) return;
      var tail = this.tail;
      if (tail == null) {
        this.tail = this.head = node;
      }
      else {
        tail.next = node;
        node.prev = tail;
        this.tail = node;
      }
      this.length++;
    };
    /*
    * 删除节点
    */
    Dare.LinkedList.prototype.moveNode = function (node) {
      if (this == null) return;
      if (node == null) return;
      //中间节点
      var prev = node.prev;
      if (prev != null) {
        prev.next = node.next;
      }
      if (node.next != null) {
        node.next.prev = prev;
      }
      //头节点
      if (node == this.head) {
        this.head = node.next;
      }
      //尾节点
      if (node == this.tail) {
        if (prev != null) {
          this.tail = prev;
        }
        else {
          this.head = this.tail;
        }
      }
      node.prev = null;
      node.next = null;
      this.length--;
    };
    /*
    * 构造节点
    */
    Dare.LinkedList.prototype.constructNode = function (node, obj) {
      if (node == null || obj == null) return;
      node.data = obj;
      return node;
    };
    /*
    * 获取节点数据
    */
    Dare.LinkedList.prototype.getNodeData = function (node) {
      if (node == null) return;
      return node.data;
    };
    /*
    * 从头开始
    */
    Dare.LinkedList.prototype.start = function () {
      if (this == null) return;
      return this.current = this.head;
    };
    /*
    * 从尾开始
    */
    Dare.LinkedList.prototype.end = function () {
      if (this == null) return;
      return this.current = this.tail;
    };
    /*
    * 下个节点
    */
    Dare.LinkedList.prototype.nextNode = function () {
      if (this == null) return;
      if (this.current == null) return
      var node = this.current;
      this.current = this.current.next;
      return node;
    };
    /*
    * 上个节点
    */
    Dare.LinkedList.prototype.prevNode = function () {
      if (this == null) return;
      if (this.current == null) return
      var node = this.current;
      this.current = this.current.prev;
      return node;
    };
    /*
    * 链表是否空
    */
    Dare.LinkedList.prototype.isEmpty = function () {
      if (this == null) return true;
      if (this.head == null) {
        return true;
      }
      else {
        return false;
      }
    };
    /*
    * 链表长度
    */
    Dare.LinkedList.prototype.getLength = function () {
      if (this == null) return;
      return this.length;
    };
    /*
    * 清空链表
    */
    Dare.LinkedList.prototype.clearList = function () {
      this.head.next = null;
      this.head = null;
    };
    /*
    * 是否存在节点
    */
    Dare.LinkedList.prototype.containsNode = function (obj) {
      if (this == null) return false;
      var node = list.head;
      if (node == null) return false;
      while (node != null) {
        if (node.data == obj) {
          return true;
        }
        node = node.next;
      }
    }; 

    实战调用用例代码陆续更新:

    <script type="text/javascript">
        var linkedList = new Dare.LinkedList();
        function createList() {
          for (var i = 0; i < 7; i++) {
            var movie = {};
            var linkedListNode = new Dare.LinkedListNode();

            movie.id = i;
            movie.name = 'movie_' + i;
            linkedListNode.data = movie;
            linkedList.appendNode(linkedListNode); //创建链表
          }
          //deleteNode(linkedList);//删除节点
          //printList(linkedList); //输出链表
          printNode(linkedList);
        }
        function printList(list) {
          var node = list.head;
          if (node == null) return;
          var html = '';
          while (node != null) {
            var movie = node.data;
            html += movie.id + "|" + movie.name + "<br>";
            node = node.next;
          }
          document.write(html);
        }
        function deleteNode(list) {
          var node = list.head;
          if (node == null) return;
          var i = 0;
          while (node != null) {
            if (i == 3) {
              linkedList.moveNode(node); //删除指定节点
              break;
            }
            i++;
            node = node.next;
          }
        }
        var printNode = function(list) {
          var node = list.head;
          if (node == null) return;
          var i = 0;
          while (node != null) {
            if (i == 4) {
              var movie = linkedList.getNodeData(node); //打印指定节点
              document.writeln(movie.id + "<br>");
              document.writeln(movie.name + "<br>");
              break;
            }
            i++;
            node = node.next;
          }
        }
      </script>

  • 相关阅读:
    插入排序
    第七章:Python高级编程-元类编程
    第五章:Python高级编程-深入Python的dict和set
    Pycharm 2018.2.1最新版破解到2099年图解教程
    IDEA 2018.2.5最新版破解到2100年图解教程
    python 3编写贴吧图片下载软件(超简单)
    python3.7 打包成exe程序(只需两行命令)
    SSM框架主要几个注解的位置
    Intellij IDEA导入eclipse项目配置jdk、tomcat到浏览器正常访问
    eclipse导入新项目配置jdk、tomcat到浏览器正常访问
  • 原文地址:https://www.cnblogs.com/fx2008/p/2226911.html
Copyright © 2011-2022 走看看