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

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

Читайте также:
  1. I. ПРЕДМЕТ И ЗАДАЧИ
  2. Б. На отдельной тетради решить контрольные задачи.
  3. Бухгалтерский учет его функции, задачи и принципы.
  4. Введение в психологию человек. Определение психологии человека как науки. Задачи и место психологии в системе наук.
  5. Введение. Цели и задачи БЖД
  6. ВВЕДЕНИЕ. ЦЕЛИ И ЗАДАЧИ КУРСА МСС ПРОДУКЦИИ.
  7. Виды бухгалтерского учета, их значение, характеристика и выполняемые задачи.
  8. Вопрос 5. Экологический мониторинг окружающей среды, его цели и задачи, уровни мониторинга.
  9. Вопрос Координирующие органы РСЧС, их задачи на каждом уровне.
  10. Вопрос №1 (Предмет и задачи морфологии)
  11. Вопрос.Объект,предмет,метод и задачи демографии.
  12. ВОСПИТАТЕЛЬНЫЕ ЗАДАЧИ

К-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.

 

Результат:

 

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


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.)