Большинство задач сводится к нескольким ADT: список, стек, очередь, дек, очередь с приоритетом, множество, словарь и граф. У каждого простые операции, а цена зависит от реализации. Этот урок даёт такой каталог: одну таблицу и несколько небольших примеров. Чем ADT отличается от структуры — в предыдущем уроке.

Восемь карточек ADT: операции и реализации на Python
Восемь карточек ADT: операции и реализации на Python

Каталог

По операциям выделяют четыре семейства: последовательности (список, стек, очередь, дек), очередь с приоритетом, ключ и принадлежность (множество, словарь) и связи (граф).

ADTОсновные операцииТипичная реализация
Listget(i), insert, removeдинамический массив, связный список
Stackpush, pop, peeklist, связный список
Queueenqueue, dequeuedeque, кольцевой буфер
Dequepush/pop с обоих концовcollections.deque
Priority queuepush, pop_min, peekдвоичная куча (heapq)
Setadd, remove, inхеш-таблица, дерево
Mapput, get, deleteхеш-таблица, дерево
Graphadd_edge, neighborsсписки смежности, матрица

Большинство этих ADT Python даёт готовыми: