Assignment 4 - Lists

Creating a doubly linked list

by sheila massey

HTML

<h1>List</h1>


<input type="button" class="btnstyle" value="Create New List" id="btnCreateList" onClick="createList();" />

<br />
<br />

<input type="textbox" id="userInput" />
<input type="button" class="btnstyle" value="Add to List" id="btnAddNode" onClick="addNode();" />

<br />
<br />

<input type="button" class="btnstyle" value="Clear Display" id="btnClearDisplay" onClick="clearDisplay();" />
    
<br />
<br />

<div id="message">
</div>

<br />

<div class="container" id="output">
</div>

JavaScript

function createList() {

  list = new DoublyList();

  list.add("A")
  list.add("B")
  list.add("C")
  list.add("D")
  list.add("E")

  displayList();
  document.getElementById("message").innerHTML = "Created New List."
}

//////////////////////////////////////////////////////////////////////////////////////////
function addNode() {
  var value = document.getElementById("userInput").value; 
  list.add(value);  
  displayList(); 
  document.getElementById("message").innerHTML = "Node Was Added."
}

////////////////////////////////////////////////////////////////////////////////////////////
function displayList() {
  console.log(list);
  document.getElementById("output").innerHTML = list.print();
}

///////////////////////////////////////////////////////////////////////////////////////////////
function clearDisplay() {
  document.getElementById("message").innerHTML = "List Was Cleared."
  list = new DoublyList();
  displayList();
}
/////////////////////////////////////////////////////////////////////////////////////////////
function Node(value) {
  this.data = value;
  this.previous = null;
  this.next = null;
  return this;
}

//////////////////////////////////////////////////////////////////////////////////////////////
function DoublyList() {
  this._length = 0;
  this.head = null;
  this.tail = null;
}

DoublyList.prototype.add = function(value) {
  var node = new Node(value);

  if (this._length) {
    this.tail.next = node; 
    node.previous = this.tail; 
    this.tail = node;
  } else { 
    this.head = node;
    this.tail = node;
  }

  this._length++; 

  return node;
};

Node.prototype.asString = function listToString() {
  return "<div><strong>Node:</strong> " + this.data + "</div>"; 
}

DoublyList.prototype.print = function printList() {
  var s = ""; 
  var n = this.head; 

  while (n != null) {
    s += n.asString();
    n = n.next; 
  }

  return s; 
}