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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 14:39   #1
stas45rus
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 46
По умолчанию Ошибка в функции.

Всем привет. Исправьте пжл ошибку. Ф-ция принимает линейный однонаправленный список отсортированный по возрастанию. В процессе работы берёт по 2 элемента из этого списка, складывает и присваивает их переменной "s". Далее вставляет полученный элемент в конец этого же списка и начинается формирование бинарного дерева. Правой ссылке вставленного элемента присваивается 2-е взятое значение из списка, а левой 1-е взятое значение из списка. Список сортируется в порядке возрастания и первые два элемента удаляются из него. Но вот по окончании выводит дерево в непонятном порядке(при выводе используется прямой обход). Может я неправильно формирую дерево??? Подскажите пжл кто знает.
Код:
Function AdditionList(P:Knot):Knot;
Var
  s:Longint;
  i:Byte;
  X,N:Knot;
Begin
  i:=0;
  While (P<>Nil) and (P^.Next<>Nil) Do
   begin
     s:=P^.Counter+P^.Next^.Counter;
     InsertList(P,s,i);
     X:=P;
     While X<>Nil Do
      begin
        N:=X;
        X:=X^.Next;
      end;
     New(N^.Right);
     N^.Right^.Counter:=P^.Next^.Counter;
     N^.Right^.Symbol:=P^.Next^.Symbol;
     N^.Right^.Bit:=1;
     N^.Right^.Next:=Nil;
     N^.Right^.Right:=P^.Next^.Right;
     N^.Right^.Left:=P^.Next^.Left;
     New(N^.Left);
     N^.Left^.Counter:=P^.Counter;
     N^.Left^.Symbol:=P^.Symbol;
     N^.Left^.Bit:=0;
     N^.Left^.Next:=Nil;
     N^.Left^.Right:=P^.Right;
     N^.Left^.Left:=P^.Left;
     SortingList(P);
     X:=P;
     N:=P^.Next;
     P:=P^.Next^.Next;
     Dispose(X);
     Dispose(N);
   end;
  AdditionList:=P;
End;
stas45rus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в функции (СИ) zterry Общие вопросы C/C++ 3 28.12.2011 06:50
ошибка в функции Katus Общие вопросы Delphi 10 10.12.2011 05:43
C# Функции(ошибка) Extez1 Помощь студентам 2 17.03.2011 12:43
Ошибка в функции grafgrial Общие вопросы Delphi 4 06.01.2011 15:02
Ошибка в функции Lotles Общие вопросы C/C++ 10 26.11.2010 16:04