Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2013, 22:31   #1
Alex Joy
Пользователь
 
Регистрация: 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);
Alex Joy вне форума Ответить с цитированием
Старый 04.06.2013, 11:53   #2
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Сейчас создадим дерево.
|
|--Код не оформлен
|--Проблема не объяснена
hon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных: Деревья. 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