Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры ОАиП(теория).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
151.01 Кб
Скачать

53.Алгоритмы удаления записей типизированного файла.

var

Rec: MyRecord;

F: file of MyRecord;

I: integer;

begin

If FileSize(F) = 1 Then

ReWrite(F)

Else

begin

Seek(F,Num);

For I := FilePos(F) To FileSize(F) - 1 Do

Begin

Seek(F,I);

Read(F,Proger);

Seek(F,I-1);

Write(F,Rec)

End;

Truncate(F);

end;

27. Динамическая структура стек, ее создание и использование.

Стек (stack) — это такой последовательный список с переменной длиной, включение в который нового элемента и исключение из него выполняется только с одной стороны.

Говорят, что стек функционирует по принципу LIFO (Last In — First Out: "последним пришел — первым вышел"). Примером стековой организации является винтовочный магазин: последний вставленный в него патрон при стрельбе "выйдет" первым.

Логическая структура стека представлена на рис. 6.1а. Элементы стека e1 ,.., en могут содержать одно или несколько полей. Важнейшие операции в стеке — включение (insertion) и исключение (deletion). Процедура включения нового элемента в стек может быть организована как последовательность следующих действий: указатель стека (stack pointer) сначала перемещается "вверх" (по рисунку 6.1) на длину слота включаемого элемента, а затем по новому значению указателя помещается очередной элемент стека. При исключении из стека сначала прочитывается элемент en (и только он), а затем указатель перемещается на длину слота "вниз". Стек считается "пустым", если указатель вершины совпадает с указателем нижней границы.

Для хранения стека в памяти отводится сплошная область, граничные адреса которой являются параметрами физической структуры стека. Если в процессе заполнения стека указатель, перемещаясь "вверх", выходит за границу первоначально отведенной области, то происходит переполнение стека (stack overflow). Переполнение стека рассматривается как исключительная ситуация, требующая выполнения действий по ее ликвидации. Физическая структура стека обычно дополняется дескриптором, который содержит поля, показанные на рис. 6.16.

Стеки находят широкое применение при организации памяти компьютеров. По принципу LIFO организована, например, область памяти, в которой размещаются локальные статические переменные пользовательских Паскаль — подпрограмм. Стековый характер имеет структура, хранящая информацию о вызовах активированных, но не завершенных, процедур; эта структура, называемая Call Stack, формируется Отладчиком Турбо Паскаля и используется при отладке пользовательских программ.

34. Алгоритмы генерирования перестановок (антилексикографическом порядке )

Рассмотрим алгоритм генерирования перестановок в антилексикографическом порядке.

Нашу последовательность можно разделить на блоки. Первые n-1 позиций блока, содержащих элемент p в последней позиции определяет последовательность перестановок множества.

Uses

begin

Crt;

for i:=1 to n do

Var

Write ( p[i], ‘ ‘);

i, n : Integer;

Writeln;

p : Array [1..10] of Integer;

end

procedure Revers ( m: Integer);

else

var

for i:=1 to m do

i, j, pow : Integer;

begin

begin

Antilex (m-1);

i:=1;

if i < m then

j:=m

begin

while i < j do

pow:= p[i];

begin

p[i]:= p[m];

pow:= p[i];

p[m]:= pow;

p[i]:= p[j];

Revers (m-1);

p[j]:= pow;

end;

i:= i+1;

end;

j:= j-1;

Begin

end;

ClrScr;

end;

Write (‘Введите n’);

procedure Antilex (m : Integer);

Readln (n);

var

for i:=1 to n do

i, pow : Integer;

p[i]:=i;

begin

Antilex (n);

if m =1 then

ReadKey;