Javascript Data Structure List Linked List

Description

Javascript Data Structure List Linked List

var list = new LinkedList();
list.append(15);//  w w  w.  java2  s . com
list.append(10);
console.log(list.toString());



function LinkedList() {

  var Node = function(element){
    this.element = element;
    this.next = null;
  }

  var length = 0
  var head = null;

  this.append = function(element){
    
    var node = new Node(element),
      current;

    //check if the this is the head of the linked list
    if(head === null){
      head = node;
    }
    else {
      current = head;
      
      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;
          current = current.next;
        }

        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;
        }

        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.isEmpty = function(){

    return length === 0;

  };

  this.size = function(){
    return length;
  };

  this.toString = function(){

    var current = head,
      string = '';

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

    return string;
  };


  this.print = function(){};
  

}



PreviousNext

Related