Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Формулировка задачи

Читайте также:
  1. I. Объект. Предмет. Задачи.
  2. I. ПРЕДМЕТ И ЗАДАЧИ
  3. I. ЦЕЛИ И ЗАДАЧИ КУРСОВОЙ РАБОТЫ
  4. I. Цели и задачи освоения дисциплины
  5. I. Цель и задачи преддипломной практики.
  6. I.1.1. Цели и задачи дисциплины
  7. II. Задачи и направления деятельности методического объединения
  8. II. Задачи, упражнения, комментарии
  9. II. Основные цели и задачи концепции
  10. II. Цели и задачи выпускной квалификационной работы

К-2012

 

Лабораторная работа №6. Бинарные деревья с использованием файлов и списков

Цель работы: смоделировать АТД «Бинарное дерево» с использованием списков и файлов. Использовать язык программирования логики Prolog.

Формулировка задачи

Смоделировать бинарное дерево со следующими возможными операциями:

· вставка и удаление элементов;

· вставка и удаление листов дерева;

· вставка и удаление элементов на любом уровне дерева;

· отображение дерева на экран;

· поиск элемента в дереве.

Первоначальное дерево хранить в двух вариантах: как список и как файл.

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

domains

file = infile; outfile

domains

treetype = tree(integer, treetype, treetype); empty()

ttreelist = integer*

predicates

nondeterm writetree(treetype, integer,integer)

nondeterm tab(integer)

nondeterm intree(integer, treetype)

gt(integer,integer)

nondeterm addelement(integer, treetype, treetype)

nondeterm delelement(integer, treetype,treetype)

nondeterm delmin(treetype, integer, treetype)

nondeterm read_input(treetype)

nondeterm read_input_aux(treetype,treetype)

nondeterm add_list_to_tree(ttreelist, treetype,treetype)

clauses

 

add_list_to_tree([], Tree, Tree).

add_list_to_tree([X|Tail], Tree, NewTree):-

addelement(X,Tree,Tree1),

add_list_to_tree(Tail, Tree1,NewTree).

 

tab(0).

tab(X):-

write(" "),

X1 = X-1,

tab(X1).

 

writetree(empty, _, _).

writetree(tree(X,Left,Right), CurInd, Indent):-

CurInd2 = CurInd + Indent,

writetree(Right,CurInd2,Indent),

tab(CurInd2), write(X), nl,

writetree(Left,CurInd2,Indent).

 

gt(X,Y):-

X > Y.

 

intree(X,empty):-

write(X, " not in tree ", '\n'),!.

intree(X,tree(X,_,_)):-

write(X, " in tree ", '\n').

intree(X,tree(Root,Left,_)):-

gt(Root,X),

intree(X,Left).

intree(X,tree(Root,_,Right)):-

gt(X,Root),

intree(X,Right).

 

addelement(X, empty, tree(X, empty,empty)).

addelement(X, tree(X, Left, Right),tree(X, Left, Right)).

addelement(X, tree(Root, Left, Right),tree(Root, Left1, Right)):-

gt(Root, X),

addelement(X, Left, Left1).

 

addelement(X, tree(Root, Left, Right),tree(Root, Left, Right1)):-

gt(X, Root),

addelement(X, Right, Right1).

 

delelement(X, tree(X, empty, Right), Right).

delelement(X, tree(X, Left, empty), Left).

delelement(X, tree(X, Left, Right), tree(Y,Left, Right1)):-

delmin(Right, Y, Right1).

delelement(X, tree(Root, Left, Right), tree(Root,Left1, Right)):-

gt(Root,X),

delelement(X,Left,Left1).

delelement(X, tree(Root, Left, Right), tree(Root,Left, Right1)):-

gt(X, Root),

delelement(X,Right, Right1).

 

delmin(tree(Y, empty, Right), Y, Right).

delmin(tree(Root,Left, Right), Y, tree(Root, Left1, Right)):-

delmin(Left, Y, Left1).

 

read_input(InTree):-

read_input_aux(empty, InTree).

 

read_input_aux(Tree, NewTree):-

readint(S), nl,

addelement(S,Tree, Tree1),

read_input_aux(Tree1, NewTree).

read_input_aux(Tree, Tree).

 

goal

 

write("Please, input file name: "),

readln(InFileName), nl,

openread(infile, InFileName),

readdevice(infile),

read_input(TX),

 

write(TX,'\n'),

writetree(TX,0,8),

intree(6,TX),

intree(12,TX),

 

write("add 22 to tree", '\n'),

addelement(22, TX, T9),

writetree(T9,0,8),

 

write("delete 5 from tree", '\n'),

delelement(5, T9, T10),

writetree(T10,0,8),!,fail.

 

Результат:

 

Висновок: на лабораторній роботі ми навчились створювати бінарні дерева, освоїли методи реалізації операцій над ними.




Дата добавления: 2015-04-26; просмотров: 85 | Поможем написать вашу работу | Нарушение авторских прав

<== 1 ==> | 2 | 3 | 4 | 5 | 6 | 7 | 8 |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав