Энциклопедия Turbo Pascal. Главы 1-4 - Обработка разреженных массивов
ОГЛАВЛЕНИЕ
Обработка разреженных массивов
Обработка разреженных массивов является основной областью применения динамического распределения памяти. В разреженных массивах фактически имеются не все элементы. Такой массив может потребоваться в тех случаях, когда размеры массива значительно превышают размер памяти вашей машины и когда не все элементы массива будут использоваться. Массивы большой размерности требуют большого расхода памяти, поскольку ее объем растет по экспоненте в зависимости от размера массива. Например, для символьной матрицы 10 х10 требуется только 100 байт памяти, а для матрицы 100х100 требуется 10 000 байт и для матрицы 1000х1000 требуется уже 1 000 000 байт памяти.
Электронная таблица является хорошим примером разреженной матрицы. Даже если матрица будет большой, например, 999х999, в каждый конкретный момент времени будет использована только некоторая ее часть. Каждому элементу электронной матрицы ставится в соответствие формула, значение или символьные строки. Память под каждый элемент разреженной матрицы выделяется по мере необходимости. Хотя использоваться может лишь небольшая часть элементов, вся матрица может быть очень большой - больше чем обычные размеры памяти ЭВМ.
Имеется три различных метода создания разреженных массивов: связанный список, двоичное дерево и массив указателей. Каждый из этих методов предполагает, что электронная матрица имеет форму, представленную на следующей странице.
В этом примере Х располагается в ячейке В2.
----А---- ----В---- ----С---- ...
1
2 Х
3
4
5
. . .