Assignment 5

Stacks

by Daniel Eberhart

HTML

<p id='reportOut'></p>

JavaScript

var Node = function(_content) {
      this.next = null;
      this.last = null;
      this.content = _content;

    }
  var Stack = function() {
    this.head = null;
    this.top = null;
    
    this.push = function(_content) {
      // No head - create one
      if (this.head == null) {
        this.head = new Node(_content);
        this.top = this.head;
        return this;
      }
      
      var addedNode = new Node(_content);
      addedNode.last = this.top;   // pointer to previous node
      this.top.next = addedNode;   // current top points to new
      this.top = addedNode;        // which becomes new top
      return this;
    }


    this.pop = function() {
      if (this.head == null) {
       
        return null;
      }

			var a = this.top.content;

      if(this.top == this.head){
      
				    this.head = null;
    				this.top = null;
           	return a;
      }else{
        this.top = this.top.last;
        this.top.next = null;      
      	return a;
      }
    }


    this.toString = function() {
      var str = "";
      var node = this.head;
      if (this.head == null){
        str = "Add a number to the stack!";
      }else{
      //  str = "Stack: ";
      }
      while (node != null) {
        str += node.content + "&nbsp";
        node = node.next;
      }
      return str;
    }
    
    this.countElements = function() {
      var countX = 0;
      var node = this.head;
      while (node != null) {
        node = node.next;
        countX= countX+1;
      }
      return countX;
    }
  }



  var buttonRunCalc = '<input type="textbox" id="operatorIn" value="+" size="1"/><input type="button" value="Run Calculator" onClick="runCalculator();" />';

	var buttonRemoveTop = '<input type="button" value="Remove Top Element" onClick="removeTopElement();" />';
  
  var buttonAddStack = '<input type="textbox" id="valueToAdd" value="10" size="3"/><input type="button" value="Add to Stack" onClick="addToStack();" />';

// take user input...