HappyJayXin
11/22/2019 - 3:54 AM

Javascritp Linked List function.

Javascritp Linked List function.

class LinkListNode {
  constructor(ele) {
    this.next = null;
    this.ele = ele
  }
}

class LinkedList {
  constructor() {
    this.head = null;
    this.length = 0;
  }

  append(ele) {
    let newNode = new LinkListNode(ele)
    if(this.head === null) {
      this.head = newNode;
    } else {
      let current = this.head;
      while(current.next !== null) {
        current = current.next
      }
      current.next = newNode
    }
    this.length++
  }

  insert(position, ele) {
    if(!(position > -1 && position <= this.length)) return false

    let newNode = new LinkListNode(ele);
    let current = this.head;

    if(this.position == 0) {
      newNode.next = current;
      this.head = newNode
    } else {
      let previous;
      let index = 0;
      while(index != position) {
        index++;
        previous = current;
        current = current.next;
      }
      newNode.next = current;
      previous.next = newNode;
    }
    this.length++;
    return true
  }

  removeAt(position) {
    if(!(position > -1 && position <= this.length)) return false

    let current = this.head;
    if(position === 0) {
      this.head = head.next;
    } else {
      let index = 0;
      let previous;
      while(position != index) {
        previous = current;
        current = current.next;
        index++;
      }
      previous.next = current.next;
    }
    this.length--;
    return current.ele
  }

  remove(ele) {
    let index = this.indexOf(ele);    
    return this.removeAt(index)
  }

  indexOf(ele) {
    let index = -1;
    let current = this.head;
    while(current) {
      index++;      
      if(current.ele === ele) {
        return index;
      }
      current = current.next;      
    }
    return -1
  }
  
  output() {
    let current = this.head;
    let res = [];
    while(current) {
      res.push({
        ele: current.ele,
        next: (current = current.next)
      })
    }
    return res
  }

  toString() {
    let current = this.head;
    let string = '';
    while(current) {
      string += `${current.ele} `;
      current = current.next
    }
    return string
  }

  size(){
    return this.length;
  }
}

var linklist = new LinkedList();
linklist.append('Monday');
linklist.append('Wednesday');
linklist.insert(1,'Tuesday');
linklist.append('Fuck');
// linklist.removeAt(3);
linklist.remove('Fuck');

linklist.indexOf('Monday') // 0
linklist.size() // 3
linklist.output()
linklist.toString() // Monday Tuesday Wednesday