Skip to content

Instantly share code, notes, and snippets.

@monochromer
Created April 30, 2015 08:56
Show Gist options
  • Save monochromer/d1856512d8d4023c315c to your computer and use it in GitHub Desktop.
Save monochromer/d1856512d8d4023c315c to your computer and use it in GitHub Desktop.
Реализция структуры Стек
/**
* Стек.
* @constructor
*/
function Stack() {
/**
* Приватная переменная для хранения элементов стека
*/
var items = [];
/**
* Очистка стека
*/
this.clear = function() {
items = [];
};
/**
* Возвращает количество элементов в стеке
*/
this.size = function() {
return items.length;
};
/**
* Проверка стека на отстутсвие элементов
* @return {boolean} true, если стек пуст.
*/
this.isEmpty = function() {
return size() === 0;
};
/**
* Добавляет элемент в стек
* @return {element} добавляемый элемент.
*/
this.push = function(element) {
var len = this.size();
items[len] = element;
};
/**
* Удаляет элемент из стека
* @return {element} удаляемый элемент.
*/
this.pop = function() {
var len = this.size();
var element = items[len - 1];
delete items[len - 1];
items.length = len ? len-- : 0;
return element;
};
/**
* Возвращает последний элемент в стеке, но не удаляет
* @return {element} последний элемент.
*/
this.peek = function() {
var len = this.size();
return items[len - 1];
};
}
/**
* Пример использования
*/
var stack = new Stack();
stack.push("HTML");
stack.push("CSS");
stack.push("JavaScript");
console.log("size of stack is " + stack.size());
console.log("top element is " + stack.peek());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment