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...