Многие приложения используют большие массивы, которые содержат всего
несколько ненулевых элементов. Такие массивы называют разреженными (sparce).
Например, матрица смежности для авиалиний может содержать 1 в позиции A[i, j],
если есть воздушная трасса между городом i и городом j. Многие авиакомпании
обслуживают сотни городов, но число фактически выполняемых рейсов намного
меньше, чем N2 возможных комбинаций. На рис. 4.8 показана небольшая карта
авиалиний, на которой изображены только 11 существующих рейсов из 100 воз-
можных пар сочетаний городов. type
String10 = String[10];
PSparseCell = ^ТsраrsеСе11;
TSparseCell = Record
Col : Longint;
Value : String10;
NextCell : PSparseCell;
end;
TCellArray = array [0..100000000] of TSparseCell;
PCellAfray = ^TCellArray;
Рис. 4.8. Карта рейсов авиакомпании
Можно сформировать матрицу смежности для этого примера с помощью мас-
сива 10x10, но большая его часть окажется пустой. Избежать потерь памяти при
создании такого разреженного массива помогут указатели. Каждая строка массива
представлена связанным списком ячеек, представляющих ненулевые записи в стро-
ках. Метки для каждого списка строки хранятся в массиве. На рис. 4.9 показана раз-
реженная матрица смежности, соответствующая карте рейсов с рис. 4.8.
Следующий код показывает, как можно определить тип данных ячейки, ис-
пользуемой для хранения списка строк.