- •Указатели
- •Работа с указателями:
- •Выделение динамической памяти при использовании типизированных указателей
- •Освобождение памяти
- •Связное распределение памяти
- •При связном распределении памяти каждый элемент данных обязательно хранит ссылку (адрес) на элемент,
- •Связные списки
- •Списки- наиболее гибкая структура данных.
- •Виды списков
- •Элемент списка
- •Описание списка
- •Упорядоченные списки
- •Последовательность действий:
- •2) Изменить ссылки:
- •Особые случаи алгоритма:
- •Процедура включения элемента в упорядоченный список
- •Исключение элемента из списка:
- •Особый случай - удаление первого элемента:
- •Пример: удаление из списка последнего элемента.
- •Формальный параметр процедуры- указатель на первый элемент обрабатываемого списка
- •В общем случае должен быть рассмотрен список, содержащий более одного элемента, например:
- •Частный случай: список состоит из одного элемента.
- •Процедура, решающая указанную задачу:
- •{общий случай}
- •Пример: включение в список заданного элемента перед предпоследним элементом
- •Формальные параметры процедуры:
- •В общем случае должен быть рассмотрен список,
- •Включение элемента:
- •Частный случай - список, состоящий из двух элементов:
- •Если в списке менее двух элементов, процедура не выполняется:
- •Процедура, решающая указанную задачу:
- •{общий случай}
- •Стек
- •Над стеком определены следующие операции:
- •Очереди
Указатели
типизированные
Тип данных, помещаемых в ДРОП, заранее определен
нетипизированные
Могут ссылаться на данные любого типа, расположенные в ДРОП
1
Работа с указателями:
Var p1:^integer; |
{ p1- адрес целого числа} |
p2:^string; |
{p2 – адрес строки} |
p3: pointer; |
{p3 – просто адрес в ДРОП} |
Теперь p1-адрес, а p1^–содержимое памяти по этому адресу
2
Выделение динамической памяти при использовании типизированных указателей
|
NEW(P) |
. |
|
|
Типизированный указатель |
Выделяется память |
в ДРОП (размер- в |
зависимости от типа указателя), и адрес выделенного участка присваивается указателю P.
3
Освобождение памяти
DISPOSE(P)
область памяти, адресуемая указателем P, освобождается и возвращается в "кучу" (при этом указатель P не должен иметь значение Nil или быть неопределенным).
Nil - Пустой указатель |
4 |
Связное распределение памяти
5
При связном распределении памяти каждый элемент данных обязательно хранит ссылку (адрес) на элемент, который должен обрабатываться после него. В статической памяти хранится только адрес элемента, обрабатываемого первым.
6
Связные списки
7
Списки- наиболее гибкая структура данных.
Достоинства списков:
•Элементы списка доступны для удаления или вставки в любой позиции;
•Память выделяется именно в том объеме, который необходим для размещения данных;
•Нет необходимости в использовании непрерывной области памяти
8
Виды списков
p
.....
Односвязный список
9
p1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p2 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
. . . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Двусвязный список
10
p3
..... |
Кольцевой список |
11