Частина тексту файла (без зображень, графіків і формул):
ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД
“УЖГОРОДСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ”
Факультет інформаційних технологій
Лабораторна робота №19
Лабораторна робота №19.
Тема: Динамічний обмін даними.
Мета: Вивчення особливостей динамічного розподілу пам'яті та методів роботи з пам'яттю, що динамічно розподілена.
Вивчити питання: Розподіл пам'яті. Змінні типу вказівник. Динамічні дані. Класифікація динамічних структур даних. Організація списків. Однонапрямлений список. Двонапрямлений список. Організація черги. Робота зі стеком. Графи. Дерева.
Завдання до роботи:
У складі колективу розробників (підгрупи для виконання завдання формуються викладачем, який проводить лабораторні заняття) скласти програму на мові Pascal для реалізації виконання всіх можливих операцій над однією з динамічних структур даних:
варіант 4 -бінарне дерево.
Для зручності користування програмою побудувати меню з вибором операцій. Передбачити, що інші операції в меню недоступні, поки структура не створена. Оформити звіт про виконання роботи (формується всіма розробниками колективно) та завантажити його в системі електронного навчання
ДВНЗ «УжНУ» в установлений термін.
ХІД РОБОТИ
uses crt;
type
PNode=^Node;
Node=record
data:integer;
left,right:PNode;
end;
var
Tree,p1:PNode;
n,x,i:integer;
ch:char;
{addition of the element}
procedure AddToTree (var Tree:PNode;x:integer);
begin
if Tree=nil then
begin
New(Tree);
Tree^.data:=x;
Tree^.left:=nil;
Tree^.right:=nil;
exit;
end;
if x < Tree^.data then
AddToTree(Tree^.left,x)
else
AddToTree(Tree^.right,x);
end;
{Search in tree}
function Search(Tree:PNode;x:integer):PNode;
var
p:PNode;
begin
if Tree=nil then
begin
Search:=nil;
exit;
end;
if x=Tree^.data then
p:=Tree
else
if x < Tree^.data then
p:=Search(Tree^.left,x)
else
p:=Search(Tree^.right,x);
Search:=p;
end;
{Bypass tree left-right }
procedure Lkp(Tree:PNode);
begin
if Tree=nil then
exit;
Lkp(Tree^.left);
write(' ',Tree^.data);
Lkp(Tree^.right);
end;
{Delete tree}
procedure DeleteTree(var Tree1:PNode );
begin
if Tree1 <> nil then
begin
DeleteTree (Tree1^.LEFT);
DeleteTree (Tree1^.RIGHT);
Dispose(Tree1);
end;
end;
{основная пограмма}
begin
Tree:=nil;
repeat {Cycle menu}
Writeln('Select action');
Textcolor(2);
Writeln('Menu:');
Writeln('1) Create tree search');
Writeln('2) Serch element in tree');
Writeln('3) Output tree');
Writeln('4) Exit');
writeln;
readln(ch);
case ch of
'1': begin
writeln(' kilkist elementiv');
readln(n);
for i:=1 to n do
begin
writeln('Enter number');
readln(x);
AddToTree(Tree,x);
end;
end;
'2': begin
writeln('Element for search');
readln(x);
p1:=Search(Tree,x);
if p1 <> nil then
writeln('Search')
else writeln('No such element!');
end;
'3': begin
writeln('TREE');
Lkp(Tree);
writeln;
end;
end;
until ch='4';
DeleteTree(Tree);
end.
///
ВИСНОВОК
За допомогою даної лабораторної роботи я вивчила особливості динамічного розподілу пам'яті та методи роботи з пам'яттю, що динамічно розподілена.