zoukankan      html  css  js  c++  java
  • js创建链表

    function LinkedList(){


    //Node表示要加入列表的项
    var Node=function(element){
      this.element=element;
      this.next=null;
    };

    var length=0;//存储列表项的数量
    var head=null;//head存储的是第一个节点的引用

    //向链表尾部追加元素
    this.append=function(element){
      var node=new Node(element),
        current;

      if(head===null){
        head=node;

       }else{
        current=node;

        while(current.next){
          current=current.next;
        }

        current.next=node;

      }

      length++;
    };

    //在链表的任意位置插入元素
    this.insert=function(position,element){
      if(position>=0&&position<=length){

        var node=new Node(element),
          current=head,
          previous,
          index=0;

        if(position===0){
          node.next=current;
          head=node;

        }else{
          while(index<position){
            previous=current;
            previous.next=node;
            index++;
          }
          node.next=current;
          previous.next=node;
        }

        length++;

        return true;
      }else{
        return false;
      }
    };

    //从链表中移除元素
    this.removeAt=function(position){
      if(position>-1 && position<length){
        var current=head,
          previous,
          index=0;

        if(position===0){
          head=current.next;
        }else{

          while(index<position){
            previous=current;
            current=current.next;
            index++;
          }
          previous.next=current.next;

        }

        length--;

        return current.element;
      }else{
        return null;
      }
    };

    //返回元素在链表中的位置
    this.indexOf=function(element){
      var current=head,
        index=-1;

      while(current){
        if(element===current.element){
          return index;
        }
        index++;
        current=current.next;
      }

      return -1;
    };

    //移除某个元素
    this.remove=function(element){
      var index=this.indexOf(element);
      return this.removeAt(index);
    };

    //判断链表是否为空

    this.isEmpty=function(){
      return length===0;
    };

    //返回链表的长度
    this.size=function(){
    return length;
    };

    //把LinkedList对象转换成一个字符串

    this.toString=function(){
      var current=head,
      string="";

      while(current){
        string=current.element;
        current=current.next;
      }
      return string;
    };

    };

    var list=new LinkedList();
    list.append(15);
    list.append(10);
    list.insert(1,11);
    list.removeAt(2)
    console.log(list.size());

  • 相关阅读:
    javascript 之异常处理try catch finally--05
    javascript 之基本包装类型--04
    javascript 之基本数据类型、引用数据类型区别--02
    javascript 之数据类型--01
    CSS3 object-fit 图像裁剪
    jQuery.extend 使用函数
    ios 不支持iframe 解决方案
    python常用代码积累
    mysql日志类型
    python中列表 元组 字符串如何互相转换
  • 原文地址:https://www.cnblogs.com/lsy26/p/5937098.html
Copyright © 2011-2022 走看看