70.1.6. КОЛЛЕКЦИИ
THIS SECTION IS UNDER CONSTRUCTION
Коллекции --+---- Линейные ----+--- с индексным ---+--- Cловарь
| | доступом +--- Hash таблица
| |
| +--- с прямым ----+---- Массив
| | доступом +---- Структура
| | +---- Файл
| |
| +-- с последоват --+---- Файл
| доступом +---- Список
| +---- Stack
| +---- Очередь (Queue)
| +---- Очередь с приоритетами
|
+-- Нелинейные ---+-- Иерархические --+---- Дерево
| +---- Пирамида
|
+- Неиерархические -+---- Набор (Set)
+---- Граф
Списки
Создать список
Удалить список
удалить все элементы в списке
Добавить элемент в список
в начало
в конец
на указанную позицию
Удалить элемент из списка
указанный элемент
первый элемент
последний элемент
Создать элемент списка
Удалить элемент списка
Взять Nй элемент из списка
Итерационный обход списка
Итерационный обход списка по признаку
или с callback по элементам
predicate
Найти элемент в списке по признаку
первый
последний
Nй
Односвязный список
Двухсвязный список
Дека
Стек
FIFO
Skip List
Skip List - список с пропусками
некоторые элементы содержат указатели сильно вперед.
(лучше делать двойной).
Cyclic Buffer
Set
Еще есть Multiset.
Map
Еще есть Multimap.
Set/Multiset
Map/Multimap
Hash/Multihash
то же что и для списка, но просто
Добавить элемент
Удалить элемент
Найти элемент по признаку
Hash
Функция хэширования для строк
Hash = (Hash * 17 + char[i]) mod TableSize
TableSize - лучше выбирать простое число
Функция Вайнбергера
Loop
{
Hash = (Hash << 4) + char[i]
G = Hash & 0xf0000000
if (G != 0)
{
Hash = (Hash ^ (G >> 24)) ^ G
}
Hash = Hash mod TableSize
Деревья
Операции: сортировка поиск обход
B-tree
delete:
join:
move:
search:
split:
B+tree
Скошенные деревья
Красно-черные деревья
Index Prev Next