Реализуем Стек, Очередь и Приоритетную очередь в 1С
В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются «узкие» места, сложные моменты в реализации и сравнивается скорость работы.
- Описание
- Подробнее
Описание
Стек
Стек — это абстрактный тип данных, представляющий собой список элементов, организованных по принципу ЛИФО ("последним пришел — первым вышел").

Основные операции со стеком это:
Push – вставка элемента наверх стека;
Top – получение верхнего элемента без удаления;
Pop – получение верхнего элемента и его удаление;
isEmpty – возвращает true, если стек пуст.
Для реализации стека будем использовать тип данных Массив. Реализуем вышеописанные операции:
#Область Стек
Функция Стек_Новый()
Возврат Новый Массив;
КонецФункции
// Push
Процедура Стек_Положить(Стек, Значение)
Стек.Добавить(Значение);
КонецПроцедуры
// Top
Функция Стек_ВзятьБезУдаления(Стек)
Возврат Стек[Стек.ВГраница()];
КонецФункции
// Pop
Функция Стек_Взять(Стек)
ИндексПоследнегоЭлемента = Стек.ВГраница();
Значение = Стек[ИндексПоследнегоЭлемента];
Стек.Удалить(ИндексПоследнегоЭлемента);
Возврат Значение;
КонецФункции
// isEmpty
Функция Стек_Пустой(Стек)
Возврат Стек.Количество() = 0;
КонецФункции
#КонецОбластиЭти операции работают как в тонком так и в других клиентах.

