Spring 2017 Exam Question 11

by joseph_kanawall2400

HTML

<input type="textbox" id='input' /><input type='button' value='Enqueue' onclick='addToQueue();' />
<br/>
<input type='button' value='Dequeue' onclick='removeFromQueue();' />
<br/>
<div id='output'></div>

JavaScript

function QueueFromStacks() {
	var data = [];
// You can use arrays or stacks. You may only use push and pop functions
// to implement the entire queue - so any objects you use here must be 
// done using only those 2 functions. Note - the Javascript array supports
// both push and pop.

   this.enqueue = function(value) {
      data.push(value);
   }
   
   this.dequeue = function(value) {
   	var length = data.length;
	var node = null;
	if(length == 1)
	{
		return data.pop();
	}
	else if(length > 1)
	{
		var temp = [];
		for(var i = 0; i < length - 1; i++)
		{
			temp.push(data.pop());
		}
		node = data.pop();
		for(var i = 0; i < length - 1; i++)
		{
			data.push(temp.pop());
		}
	}
	return node;
   }
   
   this.print = function() {
      var s =  "";
      var length = data.length;
	   var temp = [];
	   for(var i = 0; i < length; i++)
	   {
	   		var val = data.pop();
			s += val + "<br/>";
		   temp.push(val);
	   }
	   for(var i = 0; i < length; i++)
	   {
		   data.push(temp.pop());
	   }
      return s;
   }
}

var q = new QueueFromStacks();

function addToQueue() {
  var input = document.getElementById('input').value;
  q.enqueue(input);  
  document.getElementById('output').innerHTML = q.print();
  document.getElementById('input').value = "";
  document.getElementById('input').focus();
}

function removeFromQueue() {
  q.dequeue();  
  document.getElementById('output').innerHTML = q.print();
}