This JavaScript Reference section displays the code for an example program that shows how to create a circular linked list in JavaScript.
<!DOCTYPE html> <html> <head> <title>XoaX.net's Javascript</title> <script type="text/javascript" src="CircularLinkedList.js"></script> </head> <body onload="fnInitialization()"> <p id="idOutput"></p> <div id="idCol1" style="padding:0px;float:left;"></div> <div id="idCol2" style="padding:0px 20px;float:left;"></div> </body> </html>
// The Link Constructor function CLink(qData) { this.mqData = qData; this.mqpNext = this; } // The Circular Linked List Constructor function CCircularLinkedList() { this.mqpTail = null; this.mfnInsertAtHead = function(qData) { var qNewLink = new CLink(qData); if (!this.mfnIsEmpty()) { qNewLink.mqpNext = this.mqpTail.mqpNext; this.mqpTail.mqpNext = qNewLink; } else { this.mqpTail = qNewLink; } } this.mfnInsertAtTail = function(qData) { var qNewLink = new CLink(qData); if (!this.mfnIsEmpty()) { qNewLink.mqpNext = this.mqpTail.mqpNext; this.mqpTail.mqpNext = qNewLink; } this.mqpTail = qNewLink; } this.mfnRemoveAtHead = function() { if (this.mfnIsEmpty()) { return false; } else if (this.mqpTail.mqpNext == this.mqpTail) { this.mqpTail = null; } else { this.mqpTail.mqpNext = this.mqpTail.mqpNext.mqpNext; } return true; } this.mfnIsEmpty = function() { return (this.mqpTail == null); } this.mfnHead = function() { return (this.mfnIsEmpty() ? null : this.mqpTail.mqpNext); } } // The Stack Constructor function CStack() { this.mqList = new CCircularLinkedList(); this.mfnPush = function(qData) { this.mqList.mfnInsertAtHead(qData); } this.mfnPop = function() { var qPopped = this.mqList.mfnHead(); this.mqList.mfnRemoveAtHead(); return qPopped.mqData; } this.mfnIsEmpty = function() { return this.mqList.mfnIsEmpty(); } } // The Queue Constructor function CQueue() { this.mqList = new CCircularLinkedList(); this.mfnPush = function(qData) { this.mqList.mfnInsertAtTail(qData); } this.mfnPop = function() { var qPopped = this.mqList.mfnHead(); this.mqList.mfnRemoveAtHead(); return qPopped.mqData; } this.mfnIsEmpty = function() { return this.mqList.mfnIsEmpty(); } } function fnInitialization() { var saTribes = ["Reuben", "Simeon", "Levi", "Judah", "Issachar", "Zebulun", "Dan", "Naphtali", "Gad", "Asher", "Joseph", "Benjamin"]; var qStack = new CStack(); var qQueue = new CQueue(); var qpPrint = document.getElementById("idOutput"); qpPrint.innerHTML = ""; // Print the tribes in the order of the array entries. for(var sCurrTribe of saTribes){ qpPrint.innerHTML += sCurrTribe + "<br />"; // Push each tribe name onto the stack and queue qStack.mfnPush(sCurrTribe); qQueue.mfnPush(sCurrTribe); } qpPrint.innerHTML += "---------------------------------------------<br />"; var qColDiv1 = document.getElementById("idCol1"); var qColDiv2 = document.getElementById("idCol2"); // Pop and print for the stack and the queue while(!qStack.mfnIsEmpty()) { // Take each off the stack and print the value qColDiv1.innerHTML += "Stack: " + qStack.mfnPop() + "<br />"; qColDiv2.innerHTML += "Queue: " + qQueue.mfnPop() + "<br />"; } }
© 20072024 XoaX.net LLC. All rights reserved.