Skip to content

Latest commit

 

History

62 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

oscript-stack

Реализация структуры данных Стек (LIFO — Last In, First Out) для OneScript.

Возможности

Объект Стек поддерживает базовый набор операций стека:

Метод Описание
push(значение) Добавляет элемент на вершину стека
pop() Удаляет и возвращает элемент с вершины стека. Бросает исключение, если стек пуст
peek() Возвращает элемент с вершины стека, не удаляя его. Бросает исключение, если стек пуст
count() Возвращает количество элементов в стеке
empty() Возвращает Истина, если стек не содержит элементов
clear() Удаляет все элементы из стека

Стек может хранить значения любого типа, включая объекты — pop()/peek() возвращают тот же самый объект, который был передан в push(), без копирования.

Установка

Пакет пока не публикуется через opm — подключите файл src/stack.os в своём проекте как сценарий:

ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "src", "stack.os"), "Стек");

После этого тип Стек доступен для создания через Новый Стек.

Использование

Стек = Новый Стек;

Стек.push(1);
Стек.push(2);
Стек.push(3);

Сообщить(Стек.count()); // 3
Сообщить(Стек.peek());  // 3, стек не изменился

Пока Не Стек.empty() Цикл
	Сообщить(Стек.pop());
КонецЦикла;
// выведет: 3, 2, 1

Стек.push(1);
Стек.clear();
Сообщить(Стек.empty()); // Истина

Попытка получить элемент из пустого стека (pop() или peek()) бросает исключение с текстом stack underflow:

Стек = Новый Стек;

Попытка
	Стек.pop();
Исключение
	Сообщить(ОписаниеОшибки()); // stack underflow: attempt to get element out of empty stack object
КонецПопытки;

Тесты

Тесты находятся в tests/stack.os и написаны с использованием библиотек asserts и 1testrunner. Для запуска установите оба пакета через opm, затем выполните:

opm install asserts
opm install 1testrunner
1testrunner -runall tests

About

Implementation of stack data type object for OneScript language

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages