Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Процедуры создания и удаления динамических переменных




Значениями ссылочного типа являются значения адресов единиц оперативной памяти конкретной машины. Значение NIL принадлежит любому ссылочному типу. Оно указывает на отсутствие связи с объектом.

Сам динамический объект порождается с помощью стандартной процедуры new, фактическим параметром которой является ссылка на этот объект. Выполнение процедуры new(p) порождает динамический объект типа Т, т.е. процедура new ищет в оперативной памяти незадействованную до этого момента область памяти подходящего размера и присваивает переменной-ссылке p значение адреса начала этой области.

В языке Паскаль также определена специальная процедура dispose, уничтожающая динамический объект, т.е. высвобождающая область памяти, зарезервированную под этот объект. Динамические объекты, размещающиеся на внешних носителях, обычно имеют структуру файла.

Динамические списковые структуры

С помощью ссылочного типа можно создавать динамические структуры самого разнообразного характера, например линейные списки.

Однонаправленные списки

Структура данных, где каждый информационный элемент снабжается ссылкой на следующий за ним, называется связным списком. В списке предусмотрено заглавное звено. Указатель списка, значением которого является ссылка на заглавное звено, представляет список как единый объект. Однонаправленный список из целых чисел можно организовать так:

type TValue = integer;

pointer = ^element;

element = record

info:TValue;

next:pointer;

end;

list = pointer;

где поле next - указатель на следующий элемент списка.

Указатель последнего элемента равен NIL.

Однако при использовании однонаправленных списков для решения некоторых задач могут возникнуть определенные трудности.

Списки также допускают отображение на массив, например, однонаправленный список допускает такое отображение:

type elem = record

info:TValue;

next:integer;

end;

list = array [1..10] of elem;

var L:list;

use, free:integer;

где поле next - указатель на расположение (индекс) следующего элемента в

массиве,

переменная use указывает на первый элемент списка.

Также используется список свободных элементов, тоже связанных между собой. Переменная free указывает на первый элемент списка свободных элементов. Отображение на массив является менее удачным, так как количество элементов списка заранее ограничивается максимальным числом, т.е. размером массива, следовательно, список перестает быть динамической структурой.

Для удобной работы над списком определяются следующие базовые операции:

Init(L) - создание списка.

Insert(L,n,v) - вставка элемента v в список под номером n.

Delete(n) - удаление n-го элемента списка или удаление элемента по имени.

Print(L) - печать списка.

Find(L,v) - поиск элемента в списке.

Удаление из списка любого элемента, кроме первого

Вставка элемента в произвольное место, кроме начала

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...