LinkedList using Typecsript

by Preetha Srinivasan

HTML

<link rel="stylesheet" href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>

TypeScript

class ListNode {
  data:number;
  next:ListNode;
  
  constructor(data:number){
   this.data = data;
  }
  
  setNext(next:ListNode){
    this.next = next;
  }
  
  getNext(){
   return this.next;
  }

  getData() {
      return this.data;
  }
  
}

class LinkedList{
    head: ListNode = null;

    add(data: number) {
        if (this.head == null) {
            this.head = new ListNode(data);
        } else {
            var newNode = new ListNode(data);
            var current = this.head;
            while (current.getNext() != null) {
                current = current.getNext();
            }
            current.setNext(newNode);
        }
    }
    
    indexOf(data:number) {
      var found = false;
      var current = this.head;
      var index = 1;
      while (current != null && !found) {
        if (current.getData() == data){
          found = true;
          break;
        }else{
          current = current.getNext();
          index ++;
        }
      }
      return index;
    }
    
    elementAt(index:number){
     index = index-1;
     var current = this.head;
     var element = null;
     var cnt = 0;
     while (current != null){
       if (cnt == index){
        element=current.getData();
        break;
       } else{
        cnt++;
        current = current.getNext();
       }
     }
     return element;
    }
    
    remove(data:number){
      var current = this.head;
      if (current.getData() == data){
        this.head = this.head.getNext();
      } else{
        var prev = null;
        while(current != null && current.data != data){
          prev = current;
          current = current.getNext();
        }
        if (current  != null) {
         prev.setNext(current.getNext());
        }else{
         console.log("The data " + data +  "was not found");
        }
      }
    }
    
    size() {
      var current = this.head;
      var cnt = 0;
      while(current != null){
       cnt++;
       current = current.getNext();
      }
    ...