Лабораторная работа: Динамические структуры данных

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

· образовывать объекты;

· выделять для них память;

· уничтожать, когда в них исчезает необходимость.

Другое название динамической памяти – куча.

Возможно вы искали - Курсовая работа: Динамические структуры данных: дек

Для получения ясного представления о динамических переменных надо рассмотреть структуру памяти во время выполнения программы на языке Паскаль (см. рис.1).

Данные в динамической памяти размещают с использованием указателей. Указатель - это ссылка на определенную ячейку памяти, начиная с которой записывается значение переменной, поэтому данные такого типа называются еще и ссылочным типом данных.

Формат описания ссылочного типа данных:

Type <тип указателя> = ^ <идентификатор типа>,

то есть указатель связан с некоторым типом данных. Такие указатели называются типизированными.

Похожий материал - Реферат: Динамическое программирование и вариационное исчисление

Пример описания переменных ссылочного типа:

Type

p1=^integer;

p2=^real;

Var

Очень интересно - Реферат: Динамическое программирование, алгоритмы на графах

A,B,C:p1;

X,Y,Z:p2;

P:char;

Cсылочные переменные A, B, C указывают на динамические объекты целого типа, X,Y,Z - вещественного, P - символьного. Значением ссылочной переменной является адрес в динамически выделенной памяти, где хранится объект этого типа.

Вам будет интересно - Лабораторная работа: Динамическое распределение памяти

Рис. 1. Структура памяти во время выполнения программы

Для обращения к ссылочной переменной используют запись “ A^ ”, что означает: ”идти по адресу, хранящемуся в A”. Память под указатели отводится на этапе компиляции.

Однако в Турбо Паскале можно объявлять указатель и не связывать его с конкретным типом данных. Такой указатель называется нетипизированным. Для его объявления служит стандартный тип pointer. Структура и тип таких данных могут меняться во время выполнения программы.

При работе с указателями обязательны этапа два:

1. объявление указателя;

Похожий материал - Дипломная работа: Защита информации виртуальных частных сетей

2. формирование динамических данных, память которых отводится во время выполнения программы.

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

New(P) - процедура, которая создает в динамической памяти новую переменную. Р - указатель переменной того типа, который надо создать. Каждая отдельная процедура new может создать только одну динамическую переменную.

Dispose(P) - процедура, позволяющая вернуть в кучу участок памяти, занятый объектом с указателем Р.