Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.12.2011, 17:19
Julia93 Julia93 вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 2
Репутация: 10
По умолчанию Списки

Здравствуйте,
Подскажите, пожалуйста, можно ли создать односвязный список элементами которого являются бинарные деревья? (на Паскале)
Ответить с цитированием
  #2  
Старый 12.12.2011, 17:32
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Подсказываю: Можно.

P.S. Какая списку разница, какие у него элементы? Ставишь элементом указатель на вершину дерева, и вот список деревьев готов.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 12.12.2011, 17:42
Julia93 Julia93 вне форума
Прохожий
 
Регистрация: 12.12.2011
Сообщения: 2
Репутация: 10
По умолчанию

я описала такой тип:
Код:
type ukoz=^elem;
     uk=^bt;
     bt=record
           inf:integer;
           l,r:uk;
        end;
     elem=record info:uk;
                 next:ukoz;
          end;

я создала первый элемент в списке. Он записался, а со второго начинается ошибка:

Код:
 procedure add_sort(var beg:ukoz;x:integer);
var p,q:ukoz;
begin new(p);
      p^.info^.l:=nil;p^.info^.r:=nil;  -вот с этого места          p^.next:=nil;

Сам фрагмент программы:

Код:
procedure sozd;
var x:integer;
begin beg:=nil;read(x);
       while x<>0 do
                    begin add_sort(beg,x);
                          read(x);
                    end;
end;
procedure add_sort(var beg:ukoz;x:integer);
var p,q:ukoz;
begin new(p);
      p^.info^.l:=nil;p^.info^.r:=nil;
      p^.next:=nil;
      p^.info^.inf:=x;
      if beg=nil then beg:=p else
         if beg^.info^.inf>x then
            begin p^.next:=beg;
                  beg:=p;
            end
         else
             begin q:=beg;
                   while (q^.next<>nil) and(x>q^.next^.info^.inf)do
                   q:=q^.next;
                   p^.next:=q^.next;
                   q^.next:=p;
             end;
end;

lmikle: пользуемся тегами!!!

Подскажите в чем проблема? и как от нее избавиться

Последний раз редактировалось lmikle, 12.12.2011 в 18:10.
Ответить с цитированием
  #4  
Старый 13.12.2011, 22:23
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Откуда в процедуре sozd появляется переменная beg? Она что, глобальная?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:18.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025