Stack - LIFO

Last In First Out

by tammasr

JavaScript

//Operations on Stack 1. Push 2. Pop 3. Pip (displaying items) 4. Peek

var Stack = function () {
	this.count = 0;
  this.storage = {};
  
  this.push = function(value) {
  	this.storage[this.count] = value
    this.count++;
  }
  
  this.pop = function () {
  	if (this.count === 0) {
    	return undefined;
    } else {
      this.count --;  // since the array starts from 0 
    	var result = this.storage[this.count]
    	delete this.storage[this.count] 
      return result
    }
  }
  this.size = function () {
  	return this.count;
  }
  this.peek = function () {
  	return this.storage[this.count - 1];
  }
}

var letterStack = new Stack();
letterStack.push('A')
letterStack.push('B')
letterStack.push('C')
console.log(letterStack.peek());
console.log(letterStack.pop());
console.log(letterStack.peek());
console.log(letterStack.size());


/* Example : Determine if a string is palindrome or not without using any javascript inbuilt functions*/
var str = "ABCBA"
var reverseStr = "";
var words = [];
for (var i =0; i < str.length; i++) {
	words.push(str[i])
}
for (var i =0; i < str.length; i++) {
	reverseStr += words.pop()
}

/* str.split('').forEach(function(char, i) {
  reverseStr+= char;
}) */
console.log (str, reverseStr)
if (str === reverseStr){
	console.log('Given string is a palindrome', str)
}else {
	console.log('Given string is NOT a palindrome', str)
}