У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Структура даних типу дерева
5
Мета: Вивчити основні мовні конструкції мови Пролог і ознайомитися з середовищем VisualProlog

Лабораторна робота №4

Структура даних типу дерева

Тема: Структура даних типу дерева.

Мета: Одержати практичні навички роботи зі структурою даних типу дерева в середовищі Strawberry Prolog.

Теоретичні відомості.

Серед структур даних типу дерева можна виділити спеціальний клас найбільш вживаних дерев - бінарні дерева. Можна дати наступне рекурсивне визначення бінарного дерева:

1.Пусте дерево – бінарне дерево.

2.Кожний вузол бінарного дерева має не більше одного лівого бінарного піддерева і не більше одного правого бінарного піддерева.

Таку структуру даних в Пролозі можна визначити за допомогою двох предикатів:

treetype = tree(string,treetype,treetype) та empty

Останній використовується для позначення пустого дерева.

Обходи дерева.

Існує багато правил обходу дерев: прямий, зворотній, кінцевий і т.д.. Наприклад, розглянемо алгоритм прямого обходу.

Якщо дерево пусте, тоді нічого не робити.

В іншому випадку, обробити поточний вузел, потім обійти ліве піддерево обробленого вузла, а потім обійти праве піддерево обробленого вузла.

В Пролозі його можна реалізувати за допомогою двох фраз:

traverse(empty).

traverse(tree(X,Y,Z):-do something with X, traverse(Y), traverse(Z).

Хід роботи

Завдання:

Варіант 10: Написати програму в середовищі Strawberry Prolog, яка поетапно будує дерево виду:

, де х1...х7 строки введені із клавіатури. Результат вивести на екран.

 

Лістинг програми:

%simple binary tree building program

%lab_4

%made by KL

create_tree(A, tree(A, empty, empty)).

insert_left(X, tree(A, _, B), tree(A, X, B)).

insert_right(X, tree(A, B,_), tree(A, B, X)).

?-

read(X1),read(X2),read(X3),read(X4),read(X5),read(X6),read(X7),

create_tree(X1,X1_t),create_tree(X2,X2_t),create_tree(X3,X3_t),

create_tree(X4,X4_t),create_tree(X5,X5_t),create_tree(X6,X6_t),

create_tree(X7,X7_t),

insert_left(X6_t,X4_t,X4_tl),insert_right(X7_t,X4_tl,X4_tf),

insert_left(X4_tf,X3_t,X3_tl),insert_right(X5_t,X3_tl,X3_tf),

insert_left(X2_t,X1_t,X1_tl),insert_right(X3_tf,X1_tl,X1_tf),

write("The structure of the tree is:"),nl,write(X1_tf),nl.

Результати:

The structure of the tree is:

tree(1,tree(2,empty,empty),tree(3,tree(4,tree(6,empty,empty),tree(7,empty,empty)),tree(5,empty,empty)))

Yes.

Висновок: на лабораторній роботі я одержав практичні навички роботи зі структурою даних типу дерева в середовищі Strawberry Prolog. Створив програму, яка будує дерево з семи вершин, значення яких вводяться з клавіатури.