Використання вільної пам'яті, Детальна інформація

Використання вільної пам'яті
Тип документу: Реферат
Сторінок: 11
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 20.2
Скачувань: 1405
function isinr ( a : integer; lp : Plist ) : boolean;

begin

if lp = nil then isinr := false else

{ обробка голови }

if a = lp^.v then isinr := true else

{ рекурсивно перевірити належність елемента підсписку }

isinr := isinr ( a, lp^.subl )

end

Далі ми запишемо рекурсивну функцію addordr додавання елемента в упорядкований список зі збереженням його упорядкованості та повернення вказівника на список, у який вставлено елемент. Але спочатку напишемо функцію newelemr, подібну процедурі newelem з підр.16.3. На відміну від тієї процедури, вказівник на новий елемент повертається з неї.

function newelemr(p : Plist; z : integer) : Plist;

var pp : Plist;

begin

new(pp); pp^.subl:=p; pp^.v:=z;

newelemr:=pp

end;

Наведена функція використовується в функції addordr:

function addordr ( a : integer; lp : Plist ) : Plist;

var p : Plist;

begin

if (lp = nil) or (a < lp^.v) then

{список, ідентифікований lp, стає підсписком }

{ за новим головним елементом }

addordr := newelemr ( lp, a );

else

begin { рекурсивно додати елемент до підсписку }

lp^.subl := addordr ( a, lp^.subl );

addordr := lp

end

end

Рекурсивна функція delr задає вилучення елемента, що подає задане значення, зі списку та повернення вказівника на список, у якому значення a відсутнє:

The online video editor trusted by teams to make professional video in minutes