你的位置:首页 > Java教程

[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());




海岛旅游去哪好海岛旅游团报价优惠海岛蜜月旅游行程参考海岛特价旅游多少钱到海岛游费用报价大全特拉弗斯城 与樱桃作伴边品尝边旅行[三] 多哈香蕉岛安纳塔拉度假村 住进卡塔尔的"香蕉"里[二] 大研安缦 避世圣地平和如斯[二] 分界洲岛至三亚往返专线班车变更信息、分界洲岛旅游区旅游班线车交接车次表 星级待遇 哈尔滨各区书记带你逛遍冰城(图) 2015长隆万圣节夜场时间?广州长隆万圣节恐怖吗? 首届中国(海盐)旅友大会旅友征集中(组图) 番禺长隆万圣节门票价格?广州长隆万圣节是什么时候? 梅州客天下客家小镇怎么收费?客天下客家小镇要门票吗? 北京欢乐谷有什么好玩的? 深圳欢乐海岸麦鲁小镇怎么玩?欢乐海岸麦鲁小镇游玩项目有哪些? 呀诺达教师节活动?三亚呀诺达教师有什么优惠? 长隆水上乐园够票须知?广州长隆水上乐园网上可以预订吗? 义江缘有什么好吃的?桂林义江缘怎么收费? 大观园昆山峡景区漂流价格?惠州大观园昆山峡景区还能漂流吗? 长隆水上乐园日场票多少钱?广州长隆水上乐园日场门票价格? Q65110A7881 Datasheet Q65110A7881 Datasheet Q65110A7882 Datasheet Q65110A7882 Datasheet Q65110A7883 Datasheet Q65110A7883 Datasheet 庙湾岛好玩吗 庙湾岛好玩吗 庙湾岛好玩吗 番禺南粤苑 番禺南粤苑 番禺南粤苑 龙庆峡冰灯门票团购 龙庆峡冰灯门票团购 龙庆峡冰灯门票团购