• 用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());

  • 相关阅读:
    HUSTOJ:Transit Tree Path
    HUSTOJ:5500 && 洛谷:P1412:经营与开发
    hdu:2036.改革春风吹满地
    hdu:2030.汉字统计
    Leetcode:338. Bit位计数
    【学习笔记】圆方树(CF487E Tourists)
    BZOJ3238 [Ahoi2013]差异
    CF 187D BRT Contract
    CF 36E Two Paths
    CF 49E Common ancestor
  • 原文地址:https://www.cnblogs.com/jinxiangli/p/5937053.html
Copyright © 2020-2023  润新知