Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_1_semestr.docx
Скачиваний:
6
Добавлен:
07.08.2019
Размер:
110.04 Кб
Скачать

If EmptySt(st) then writeln ('Список пуст');

else begin x:=st.s[st.top1];

st.top1:=st.top1-1; end;

end;

Вопрос №73

Понятие пула свободной памяти.

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

Над пулом свободной памяти, как и любой структурой данных, выполняются операции: инициализация, добавление элемента, удаление элемента, стек пуст.

ОС поддерживает системный пул свободной памяти, где эти операции автоматизированы.

Вопрос №74

Связное распределение памяти.

Моделирование связного распределения памяти в Pascalе.

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

Рассмотрим структуру данных для организации связного распределения памяти:

const max=100;

type Ind=1..max; Pnt=0..max;

Node=record

info: Dat (любой тип языка Pascal);

Next: Pnt; end;

Pool=record

top: pnt;

A: array[Ind] of Node; end;

info next

4

0

7

6

3

2

3

var Pl: Pool; first: Pnt;

Переменная first содержит адрес первого элемента Poolа, после Next содержит адрес логически следующего узла. Если Next=0, то текущий элемент последний.

Примеры операций над пулом свободной памяти:

Существует x: dat, и ее необходимо добавить в новый узел, который будет размещен за первым элементов Poolа. Разобьем решение на 3 части:

1) Взять у пула свободной памяти новый блок:

Q:=Pl.top;

pl.top:=Pl.A[Pl.top].next;

2) Разместить x в выбранном блоке памяти:

Pl.A[Q].info:=x;

3) Корректность связей:

Pl.A[Q].Next:=Pl.A[first].nex;

Pl.A[first].Next:=Q;

Пусть х - натуральное число и x<= количество элементов в Информационной структуре.

Необходимо добавить новый элемент с информационной составляющей x после k-того элемента структуры:

1) Q:=Pl.top;

Pl.top:=Pl.A[Pl.top].Next;

2) Q1:=first;

for i:=1 to k-1 do

Q1:=Pl.A[Q1].Next;

Pl.A[Q].info:=x;

3) Pl.A[Q].Next:=Pl.A[Q1].next;

Pl.A[Q1].Next:=Q;

Вопрос №75

Преимуществу и недостатки связного распределения памяти.

Основной недостаток связного распределения памяти - выделение дополнительной памяти для поля связи. Но эта дополнительная память не влияет на пространственную сложность задачи, так как память, выделяемая под информационную составляющую, в большинстве программ гораздо больше, чем память выделенная под поле связи.

Преимуществом связного распределения прежде всего является отсутствие необходимости выполнения массовых операций. Кроме того, при связном распределении памяти нет необходимости отводить под структуру данных неделимый блок памяти. При связном распределении памяти количество узлов информационной структуры может динамически меняться во время работы программы.

Вопрос №76

Ссылочные типы. Основные понятия и операции. Динамические переменные.

Определение ссылочного типа имеет вид: ^<базовый тип>;

type TPInt=^integer; TPReal=^real;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]