JSFiddle - React, Tailwind, and code Playground

by Ryan Brown

HTML

<body>
        <form id="formski"><br>
<label for="Number">New Value For Chain</label> <input id="newValue" type="text" /><br><br>
<input type="button" value="Enter" id="onClick">
</form>
<br>
<br>
<div id="display"></div>
</body>
<p id="demo"></p>
<p id="demo2"></p>
<p id="demo3"></p>

CSS

#formski {
  width: 15em;
  height: 5em;
  color: darkblue;
}

JavaScript

document.getElementById("onClick").onclick = function() {insert();}

function insert(){
   var newValue = document.getElementById('newValue').value;  
   chain.addLink(newValue);
    chain.bubbleSort(chain.linkStorage);
    //chain.quickSort(chain.linkStorage);
    chain.printBubbleSort();
    //chain.printQuickSort();
    chain.arr();
    
    document.getElementById("demo").innerHTML = "<br> Last Link: " + chain.lastLink().asString();
}
   

Chain.prototype.arr = function (){
    /*
     for (i=o; i< this.linkStorage.length; i++){
          var sortedArray = [];
          sortedArray[i] = Chain.linkStorage[i].value
          var Val = sortedArray[i];
            chain2.addLink(Val);
     }
     */
}
        
    

function Link(_id, _value, _next) {
    this.id = _id; 
    this.value = _value;  
    this.next = _next; 
}

Link.prototype.asString = function () {
    return "Link: " + this.id +
        " Value: " + this.value +
        " Points To: " + this.next + "<br/>";
};

function Chain(_firstValue) { 
    this.head = new Link(0, _firstValue, null);
    this.linkStorage = [];  
    this.linkStorage.push(this.head);
}

Object.defineProperty(Chain.prototype, 'length', {
    get: function () {
        return this.linkStorage.length;
    }
});

Chain.prototype.lastLink = function () {
    for (link in this.linkStorage) {
        if (this.linkStorage[link].next == link_id) {
            return this.linkStorage[link];
        }
    }
    return -1
}

Chain.prototype.addLink = function (_linkValue) {

    link_id = this.length;
    prev_link = this.linkStorage[link_id - 1];
    this.linkStorage.push(new Link(link_id, _linkValue, link_id + 1));
    prev_link.next = link_id;
}

Chain.prototype.bubbleSort = function (a, par){
    var swapped;
    do {
        swapped = false;
        for (var i=0; i < a.length-1; i++) {
            if (a[i].value > a[i+1].value) {
                var temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
          ...