//以下是一个链表类

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

用js对象创建链表的更多相关文章

  1. JS对象创建的几种方式整理

    ​ 本文主要介绍了JS对象创建的几种方式 第一种:Object构造函数创建 var Person = new Object(); Person.name = 'Nike'; Person.age = ...

  2. js 对象创建设计模式

    创建js对象可以使用多种模式,每种模式有着不同的特点:如下: 1.工厂模式:创建一个函数,在函数中实例化一个对象,当每次调用函数时,就实例化一个对象,并返回这个对象: 我们知道,对象是引用形式的,每次 ...

  3. JS对象创建模式

    JS的对象创建模式 1.Object构造函数模式 var person = new Object(); person.name = 'name'; person.age = 43; console.l ...

  4. JS对象创建常用方式及原理分析

    ====此文章是稍早前写的,本次属于文章迁移@2017.06.27==== 前言 俗话说"在js语言中,一切都对象",而且创建对象的方式也有很多种,所以今天我们做一下梳理 最简单的 ...

  5. JS对象创建的几种方法

    最近一直在看JS高级程序设计这本书,有空来梳理一下几种创建对象的方式.话不多说,直接步入正题. 第一种:Object构造函数创建 var Person = new Object(); Person.n ...

  6. js学习(六)- js对象创建

    //---------------------js文件--------------------- var namespace02=new Object(); namespace02.Person=fu ...

  7. JS——对象创建

    1.原始创建 <script> person = new Object();//不要var person.firstname = "Bill"; person.last ...

  8. 浅谈Js对象的概念、创建、调用、删除、修改!

    一.我们经常困惑,对象究竟是什么,其实这是一种思维,一种意识上的东西,就像我们都说    世界是有物质组成的道理一样,理解了下面的几句话!对象也不是那么抽象!    1.javascript中的所有事 ...

  9. 在这个看脸的世界,该如何优雅的创建JS对象

    Javascript是一门解释型的语言,是基于对象的,严格来说并不怎么符合的面向对象的标准,显著的特点就是函数就是“一等对象”,与传统的面向对象语言不同的时,Javascript有“一千种”方法来创建 ...

随机推荐

  1. Mysql engine

    MySQL engine.type类型的区别:

  2. hdu5785--Interesting(manacher)

    题意:求给定字符串的三元组(I,J,K)  使得S[i..j] 和 S[j+1..k] 都是回文串.求所有满足条件的三元组 ∑(i*k) 题解:求出以j为结尾的回文串起始位置的和记为lv[j],和以j ...

  3. stm32 时钟配置——外部时钟倍频、内部时钟倍频 【worldsing笔记】

    stm32可选的时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差. 准确的来说有4个时钟源可以选分别是HSI.LSI.H ...

  4. IAR stm8带库的工程模板

    下载:http://pan.baidu.com/share/link?shareid=2243555626&uk=2483252218

  5. 简单dp-poj-2231-Moo Volume

    题目链接: http://poj.org/problem?id=2231 题目大意: 给n个位置,求所有位置到其他n-1个位置的距离总和. 解题思路: 简单dp. o(n^2)的时间复杂度会超.先对这 ...

  6. 【Stage3D学习笔记续】山寨Starling(七):一般优化方法简介及混合模式

    关于事件的优化: 遍历注册的事件由foreach改变为fori,在大量数据遍历时会有提升: 事件池优化: 所有的事件都使用一个对象池进行保存,而不是使用到时进行创建,使用EventDispatcher ...

  7. C#- 将秒数转化成任意时间格式

    将秒数转化成任意时间格式,可以使用C#的一个函数TimeSpan,看示例: TimeSpan ts = new TimeSpan(0, 0, 3661); richTextBox2.Text = ts ...

  8. SQL Server 127个SQL server热门资料汇总

      SQL Server 127个SQL server热门资料汇总     最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLSer ...

  9. ios常用动画

    // // CoreAnimationEffect.h // CoreAnimationEffect // // Created by VincentXue on 13-1-19. // Copyri ...

  10. 使MySQL 支持繁体字

    要 MySQL 支持繁体字,可以将相关编码设置为 UTF8 (也叫 UTF-8).编码的设置从浏览器到表字段,一个都不能少: 浏览器设置 HTML设置 服务器 Request 对象设置 数据库连接设置 ...