Действие
| Результат
|
1. Объявление
type
Plnt= ^ integer;
Var a, b: Plnt;
|
a?
b?
|
2. Выделение памяти
New (a);
New (b);
|
a
b
|
3. Занесение информации
a^:=1;
b^:=2;
|
a a^
b b^
|
4. Копирование информации
a^:=b^;
|
a a^ a^=b^
b b^ a<>b
|
5. Копирование адреса
а) а:= b;
b) Dispose (a);
a:= b;
|
a a^ a^=b^
b b^ a=b
a
a^
b b^
|
6. Присваивание пустого адреса nil
b:= nil
|
a a^
b
b^
|
Стандартные процедуры для работы с динамической памятью
Имя и параметры
| Типы параметров
| Действие
|
New(p)
| p - типизированный указатель
| выделяет динамическую память равную размеру типа, на который указывает p, и возвращает указатель на нее в переменной p
|
Dispose(p)
| p - типизированный указатель
| освобождает динамическую память по указателю p, ранее выделенную процедурой New
|
GetMem(p,n)
| p - указатель любого типа, n - integer
| выделяет динамическую память размера n байт и возвращает указатель на нее в переменной p
|
FreeMem(p)
| p - указатель любого типа
| освобождает динамическую память по указателю p, ранее выделенную процедурой GetMem
|
Линейные списки -это данные динамической структуры, которые представляют собой совокупность линейно связанных однородных элементов, и для которых разрешается добавлять элементы между любыми двумя другими, и удалять любой элемент.
Кольцевые списки -это такие же данные, как и линейные списки, но имеющие дополнительную связь между последним и первым элементами списка.
Стек -это частный случай линейного односвязного списка, для которого разрешено добавлять и удалять элементы только с одного конца списка, который называется вершиной (головой) стека.
Для организации связи между элементами динамической структуры данных требуется, чтобы каждый элемент содержал кроме информационных значений, как минимум один указатель. В качестве элементов таких структур необходимо использовать записи, которые могут объединять в единое целое разнородные элементы.
Схематично такую структуру данных можно показать следующим образом:
Type T = ^ Rec;
Rec = record
Inf: integer;
Link: T
End;
Var P, Q: T;