|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2013, 22:31 | #1 |
Пользователь
Регистрация: 26.05.2013
Сообщений: 13
|
Динамические структуры данных: Деревья. Pascal
Помогите пожалуйста. Что тут не так? Программа не работает. Условие: Необходимо создать динамическую структуру дерева. Описать элемент структуры и функции добавления элементов дерева, удаления элементов из дерева и вывод дерева на экран. Определение в поддереве второй дочерней вершины.
Вот код: program Project20tru; {$APPTYPE CONSOLE} uses SysUtils; type PNode=^Node; Node=record data:integer; left,right:PNode; end; var Tree,p1:PNode; n,x,i:integer; ch:char; 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; 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; procedure DeleteTree(var Tree1:PNode ); begin if Tree1 <> nil then begin DeleteTree (Tree1^.LEFT); DeleteTree (Tree1^.RIGHT); Dispose(Tree1); end; end; procedure print(p: PNode; n: integer); var i: integer; begin if p <> nil then begin if p^.right <> nil then print(p^.right,n+1); for i:=1 to n do write(' '); writeln(p^.data); if p^.left <> nil then print(p^.left,n+1); end; end; function CreateNode(P: PNode): PNode; var P1, P2: PNode; begin if P = nil then begin result := nil; exit; end; New(result); result^.Data := P^.Data; result^.Right := nil; P1 := P^.Left; P2 := P^.Right; if P1 = nil then begin P1 := P2; P2 := nil; end; result^.Left := CreateNode(P1); if P1 <> nil then result^.Left^.Right := CreateNode(P2); end; begin try Tree:=nil; repeat Writeln('viberite deystvie '); Writeln('Dostupnie deystvia:'); Writeln('1) Sozdanie dereva poiska'); Writeln('2) Poisk elementa dereve'); Writeln('3) Vivod dereva'); Writeln('4) Vihod'); Writeln('5) Vivesti znachenia vseh vershin'); writeln; readln(ch); case ch of '1': begin writeln(' kolv elementov'); readln(n); for i:=1 to n do begin writeln('Vvedite chislo'); readln(x); AddToTree(Tree,x); end;end; '2': begin writeln('Element dly poiska'); readln(x); p1:=Search(Tree,x); if p1 <> nil then writeln('Naiden') else writeln('Takogo elementa net!'); end; '3': begin writeln('Samo derevo'); print(Tree,n); end; '5': begin CreateNode(P); end; end; until ch='4'; DeleteTree(Tree); |
04.06.2013, 11:53 | #2 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 693
|
Сейчас создадим дерево.
| |--Код не оформлен |--Проблема не объяснена |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические структуры данных: Деревья. Pascal | Alex Joy | Помощь студентам | 1 | 27.05.2013 20:20 |
Динамические структуры данных. Pascal | Alex Joy | Помощь студентам | 1 | 27.05.2013 08:30 |
Динамические структуры данных. Pascal | Alex Joy | Помощь студентам | 0 | 26.05.2013 20:57 |
Динамические структуры данных. Стеки. Очереди. Двоичные деревья. | Paulo | Помощь студентам | 0 | 30.04.2009 06:12 |