Частина тексту файла (без зображень, графіків і формул):
ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД
“УЖГОРОДСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ”
Факультет інформаційних технологій
Лабораторна робота №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.
///
ВИСНОВОК
За допомогою даної лабораторної роботи я вивчила особливості динамічного розподілу пам'яті та методи роботи з пам'яттю, що динамічно розподілена.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!