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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2010, 18:11   #1
J.Bond
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 45
По умолчанию ХЛАМ У ПАМЯТИ!!!

работая с бинарными деревями видимо не верно написал функцыю
удаления с памяти дерева: теперь когда нажымаю на кнопку нарисовать дерево, мне пишет не хватает памяти для выполнения операцыи...
посаветуйте что делать???


вот кстате ета процедура:
Код:
procedure DestroyTree(p: PKNot);


begin
 if p^.left<>nil then
   DestroyTree(p^.left);

  if p^.wright<>nil then
   DestroyTree(p^.wright);

  Dispose(p);
end;

Последний раз редактировалось Stilet; 01.12.2010 в 20:01.
J.Bond вне форума Ответить с цитированием
Старый 01.12.2010, 19:58   #2
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

у родителя ссылочку на удаляемый элемент разве не надо занулить? а то ведь в неизвестность будет указывать
casekey вне форума Ответить с цитированием
Старый 01.12.2010, 20:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Конечно неправильно. Вернее ненадежно.
Удаление дерева нужно вершить с корня и рекурсией до самой последней ее ветки.
Например у тебя есть TopBranch - корень
Тогда
Код:
procedure DestroyTree(pn:PKNot=nil);
var p: PKNot
begin
 if p=nil then p:=TopBranch;
 while p^.Next<>nil do begin
   if p^.FirstChild<>nil then   DestroyTree(p^.FirstChild);
   p:=p^.Next;
   Dispose(p^.Prev);
 end;
end;
Где
p^.Next - Следующая ветка такого уровня
p^.FirstChild - Первая подветка
p^.Prev - Предидущая ветка такого уровня

Вроде ничего не забыл
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Числа отдельно, хлам отдельно Keetotko Общие вопросы C/C++ 6 18.10.2010 18:15
Сантехника памяти Syuf Общие вопросы C/C++ 3 05.03.2010 21:43
недостаточно памяти kaizer131 Microsoft Office Access 12 04.03.2010 05:14
Нехватка памяти Корчеватель Общие вопросы Delphi 0 17.10.2008 19:03
Место в памяти. Манжосов Денис :) Помощь студентам 3 24.09.2008 15:35