В отличие от статического массива при использовании динамического массива можно задавать количество элементов в массиве в любом месте программы. Память под такие массивы выделяется динамически. Нумерация элементов в динамическом массиве всегда начинается с нуля.
Структура:
Var <имя_перем>:array of <тип_элем>;
При запуске программы массив не содержит элементов и значение переменной-массива равно Nil.
Для того чтобы задать или изменить количество элементов в динамическом массиве используется процедура:
SetLength(<масс>,<кол_эл>)
Если текущее количество элементов в <масс> меньше <кол_эл>, то выделяется память под дополнительные элементы в конце массива, значения старых элементов сохраняются, а новых неопределены. Если текущее количество элементов в <масс> больше <кол_эл>, то в конце массива удаляются необходимые элементы и память из-под них освобождается.
Чтобы удалить все элементы из массива и освободить память необходимо присвоить переменной-массиву значение Nil.
Чтобы получить текущее количество элементов в масиве используется функция Length(<масс>).
Также для динамических массивов применимы функции:
High(<масс>) = – максимальный индекс в массиве (Length(mass)-1 или –1, если пустой))
Low(<масс>) – минимальный индекс в массиве (= 0)
Функция Copy(A,P,K) - возвращает подмассив массива A начиная с Р индекса K элементов.
Стеком называется динамическая структура данных, добавление элемента в которую и исключение элемента из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу:
В Delphi существует класс TStack, который реализует стек динамических переменных.
Методы этого класса:
Добавить элемент в стек
Функция Push(AItem: Pointer): Pointer;
Извлечь элемент из стека
Функция Pop: Pointer;
Очередью называется динамическая структура данных, добавление элемента в которую производится в один конец, а выборка осуществляется с другого конца. Очередь работает по принципу: