Iteration

by vzufelt

HTML

<h2>
  Assignment 6
</h2>
<input type="textbox" id="value" value="">
<br/>
<input type="button" value="Enter" onclick="calculate()" />

<br/><br/>

<p id="total">
</p>

<p id="output" class="output">
</p>

<div id="error">
</div>

JavaScript

function Queue() {
  this.head = null;
  this.tail = null;
  this.queue = 0;

  this.insert = function(data) {

    var node = {
      data: data,
      next: null,
      prev: null
    }

    if (this.queue == 0) {
      this.head = node;
      this.tail = node;
    } else {

      this.tail.next = node;
      node.prev = this.tail;
      this.tail = node;
    }

    this.queue++;
  }

  this.delete = function() {
    if (this.queue == 0) {
      document.getElementById("output").innerHTML = "Queue is empty.";
      return null;
    }

    var deletedElement = this.head.data;
    this.head = this.head.next;
    this.head.prev = null;

    this.queue--;

    if (this.queue == 0) {
      this.clear();
    }

    return deletedElement;
  }

  this.deleteByFactor = function(element) {
    var deleted = false;
    var node = this.head;
    while (node != null) {
      if (node.data % element == 0) {
        this.deleteByElement(node.data);
        deleted = true;
      }
      node = node.next;
    }
    return deleted;
  }

  this.isEmpty = function() {
    return this.queue == 0;
  }

  this.size = function() {
    return this.queue;
  }

  this.clear = function() {
    this.head = null;
    this.tail = null;
    this.queue = 0;
  }

  this.print = function() {
    var node = this.head;
    var queue = '';
    while (node != null) {
      queue = queue + node.data + ", ";
      node = node.next;
    }
    return queue;
  }

  this.deleteByElement = function(element) {

    var node = this.head;
    while (node != null) {
      if (node.data == element) {

        var bef = node.prev;
        if (bef == null) {
          this.head = node.next;
        } else {
          bef.next = node.next;
        }

        var aft = node.next;
        if (aft == null) {
          this.tail = node.prev;
        } else {
          aft.prev = node.prev;
        }
        this.queue--;
        return true;
      }
      node = node.next;
    }
    return false;
  }

}

function...