Глава 4 Типовые алгоритмы обработки информации
____________________________________________________________________
ся программно в зависимости от задачи. Пример автоматического создания де-
рева мы рассмотрим в разделе сортировка и поиск с помощью двоичного дере-
ва.
Теперь попробуйте самостоятельно реализовать другие способы обхода двоичного дерева, т.е. обход сверху и снизу.
Достоинства представления деревьев в виде массивов – относительная простота реализации. Для небольших деревьев, особенно если количество вер-
шин заранее известно, использование массивов может оказаться более эффек-
тивным решением. Но отсюда вытекает и недостаток, если количество вершин дерева заранее неизвестно, то, как и в случае со стеком, приходится резервиро-
вать память по максимуму. А каков этот максимум? Определенных критериев нет. Память расходуется непродуктивно. Еще один существенный недостаток – порядок расположения поддеревьев в массиве не поддается формализации.
Паскаль предоставляет значительно более удобный механизм для пред-
ставления списков и, следовательно, для реализации стека и деревьев. Рассмот-
рим этот механизм.
4.3.4 Указатели
Существует ряд задач, где статические структуры данных неэффективны для реализации алгоритма, поэтому в Паскале предусмотрена возможность ра-
боты с динамическими типами структур. С некоторыми из них, в частности стеками и связанными списками, мы познакомились в предыдущих разделах.
Также мы увидели, что стек можно реализовать, используя массивы.
Эффективным средством построения связанных списков являются указа-
тели.
Об указателях мы уже вели разговор в разделе 3.2.1.6, где шла речь о типе данных – указатель.
Напомним синтаксис объявления типизированных указателей: