task-12-konovalova
task-12
Цель этого задания – разработать библиотеку, предоставляющую стандартные структуры данных.
var Queue = require('./standard-library.js').Queue;
var queue = new Queue();
queue.enqueue("foo");queue.enqueue("bar");queue.enqueue("baz");
queue.dequeue(); // "foo"queue.dequeue(); // "bar"queue.dequeue(); // "baz"
Для этого написать реализацию функций-конструкторов, заданных в модуле
.
Главное, чтобы структуры реализовывали заданный интерфейс – то есть, предоставляли перечисленные свойства и методы.
Скорее всего, при реализации структур данных вы будете использовать наследование. Делать методы родителя недоступными в потомке не нужно.
Заготовка модуля находится в файле
.
Необходимо реализовать следующие структуры данных.
Коллекция (Collection)
Коллекция элементов. Поддерживает операции вставки и извлечения первого и последнего элемента, хранит ссылки на первый и последний элемент.
- first – первый элемент коллекции
- last – последний элемент коллекции
- length – количество элементов в коллекции
- isEmpty – true, если коллекция пуста
- pickFirst() – извлекает первый элемент из коллекции и возвращает его
- pickLast() – извлекает последний элемент из коллекции и возвращает его
- insertFirst() – вставляет элемент в начало колекции
- insertLast() – вставляет элемент в конец коллекции
- empty() – очищает коллекцию
Очередь (Queue)
Список элементов, организованных по принципу "первым пришёл – первым вышел". Элементы добавляются и извлекаются с одного конца списка.
- length – количество элементов в очереди
- enqueue(item) – добавляет элемент в очередь
- dequeue() – извлекает элемент из очереди
- empty() – очищает очередь
Массив фиксированной длины (Fixed array)
Массив фиксированного размера. Попытка добавить или получить элемент за пределами указанного диапазона должна вызывать ошибку RangeError.
- length – количество элементов в массиве
- insertAt(index, item) – записывает элемент в массив по заданному индексу
- getAt(index) – возвращает элемент по указанному индексу.
Множество (Set)
Список, хранящий уникальные элементы.
- length - количество элементов в множестве
- insert(item) - добавляет элемент в множество
- remove(item) - удаляет элемент из множества
- has(item) - проверяет, входит ли элемент в множество
- intersect(set) – возвращает множество элементов входящих в исходное множество и в переданное множество (в оба сразу)
- union(set) – возвращает множество элементов входящих в исходное множество или в переданное множество (в любое из двух)
- empty() – очищает множество
Встроенный объект
использовать не разрешается.
Описание
Репозиторий студента konovalova, созданный из task-12-snapshot-m8Jcg
Языки
JavaScript