Меню

Stack — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).

Аналогично магазину в огнестрельном оружии, стрельба начнётся с патрона, заряженного последним.

Стек может иметь следующие методы:

  • push: добавить новый элемент;
  • pop: удалить верхний элемент, вернуть его;
  • peek: вернуть верхний элемент;
  • length: вернуть количество элементов в стеке.

class Stack {
  constructor() {
    this.count = 0;
    this.storage = {};
  }
  push(value) {
    this.storage[this.count] = value;
    this.count++;
  }

  pop() {
    if (this.count === 0) return undefined;
    this.count--;
    let result = this.storage[this.count];
    delete this.storage[this.count];
    return result;
  }

  peek() {
    return this.storage[this.count - 1];
  }

  length() {
    return this.count;
  }
}