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