JS Linked List
by austinmillett
HTML
<ul id="logging">
</ul>
CSS
p, h1, hr, li { margin: 10px; }
strong { font-weight: bold; }
JavaScript
function IHasAList() {
this.start = undefined;
this.list = new Object;
};
function ListNode(myname,nextnode) {
this.nodeName = myname;
this.nodeData = undefined;
this.next = nextnode;
LogThis("Created node: ",this.nodeName,this);
};
ListNode.prototype.setNext = function(nextNode) {
oldnext = this.next;
this.next = nextNode;
(oldnext) ? this.next.next = oldnext : null;
LogThis("Ran: ", this.nodeName + ".setNext(" + nextNode.nodeName + ")");
LogThis("Result: ", "next node of " + this.nodeName + " is " + this.next.nodeName);
(oldnext && this.next.next)
? LogThis("Result: ", "next node of " + this.next.nodeName + " is " + this.next.next.nodeName)
: null;
};
var singlyLinkedList = new IHasAList();
singlyLinkedList.list.one = new ListNode('myFirstNode');
singlyLinkedList.list.three = new ListNode('myThirdNode');
singlyLinkedList.list.two = new ListNode('mySecondNode',singlyLinkedList.list.three);
singlyLinkedList.list.four = new ListNode('myFourthNode');
singlyLinkedList.list.one.setNext(singlyLinkedList.list.two);
singlyLinkedList.list.two.setNext(singlyLinkedList.list.four);
function DoubleListNode(myname,prevnode,nextnode) {
this.nodeName = myname;
this.nodeData = undefined;
this.next = nextnode;
this.prev = prevnode;
(prevnode) ? prevnode.next = this : null;
(nextnode) ? nextnode.prev = this : null;
LogThis("Created node: ",this.nodeName,this);
};
DoubleListNode.prototype.setNext = function(nextNode) {
oldnext = this.next;
this.next = nextNode;
this.next.prev = this;
if(oldnext) {
this.next.next = oldnext;
oldnext.prev = nextNode;
}
};
DoubleListNode.prototype.deleteNode = function() {
this.prev.next = this.next;
this.next.prev = this.prev;
delete this;
}
var doublyLinkedList = new IHasAList();
doublyLinkedList.list.one = new DoubleListNode('myFirstDoubleNode');
doublyLinkedList.list.two = new...