Структуры данных
October 27, 2023

Очереди (stack, queue)

Стэк (stack)

Стек хранит данные в последовательном порядке и удаляет последние (новые) элементы.

Алгоритм

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

Код

function Stack() { 
  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 
    
    this.count-- let
    result = this.storage[this.count] 
    delete this.storage[this.count] 
    
    return result
  } 
 
  this.peek = function() { 
    return this.storage[this.count - 1] 
  } 
 
  this.size = function() { 
    return this.count 
  }
}

Очередь (queue)

Очередь напоминает стек, она так же хранит данные в последовательном порядке, но удаляет самые первые элементы (старые)

Алгоритм

  • enqueue: войти в очередь, добавить элемент в конец
  • dequeue: покинуть очередь, удалить первый элемент и вернуть его
  • front: получить первый элемент
  • isEmpty: проверить, пуста ли очередь
  • size: получить количество элементов в очереди

Код

function Queue() { 
  let collection = [] 
  
  this.print = function() { 
    console.log(collection) 
  } 
  
  this.enqueue = function(element) { 
    collection.push(element) 
  } 
  
  this.dequeue = function() { 
    return collection.shift() 
  } 
  
  this.front = function() { 
    return collection[0] 
  } 
  
  this.isEmpty = function() { 
    return collection.length === 0 
  } 
  
  this.size = function() { 
    return collection.length } 
  }

Задачи

Видео