IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Преобразование списка в дерево
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский

Репутация: -  0  +


AAAAAAA Почему закрыли мою тему!? angry.gif <_<
Вопрос в том, что нужно создать дерево из СПИСКА, а не из файла ( из файла- это уже другой пункт моей курсовой и я не думаю, что два разных задания решаются одной программой huh.gif ).
Написано сумбурно, но как могу так и пишу, по другому это я объяснить не могу. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
без головного элемента

что-то новое...
список он на то и список, чтобы начинаться и заканчиваться...

Ладно, попробую описать работу со списком.
ООП, я так понял тебе не знакомо, придётся извращаться...
Код

Type
 {Структура описывает элемент списка}
 PListRec=^TListRec;
 TListRec=Record
   Key:Integer;   {Ключ}
   Item:String;    {для удобства возбмём элементы спсиска - строки}
   Next:PListRec  {Следующий элемент}
 End;

{Бредовая функция, но преподы её любят. Создаёт пустой список.
Мы будем обозначать список Nil'ом}
Function List_Create:PListRec;
Begin
 CreateList:=Nil
End;

{Добавляет элемент Item с ключом Key в список List}
Procedure List_Add(Var List:PListRec;Key:Integer;Item:String);
Var
 p:PListRec;
Beign
 New(p);
 p^.Key:=Key;
 p^.Item:=Item;
 p^.Next:=List;
 List:=p
End;

{Очищает список освобождая всю память}
Procedure List_Clear(Var List:PListRec);
Var
 p:PListRec
Begin
 While List<>Nil Do
 Begin
   p:=List^.Next;
   Dispose(List);
   List:=p
 End
End;

{Проверяет, есть ли элемент с ключом Key в списке. Если есть, то возвращает указатель на элемент списка с этим ключом, иначе - Nil}
Function List_Contains(Key:Integer;List:PListRec):PListRec;
Var
 p:PListRec;
Begin
 p:=List;
 While p<>Nil Do
   If p^.Key=Key Then
   Begin
     Contains:=p;
     Exit
   End
   Else
     p:=p^.Next;
 Contains:=Nil
End;

{Доработанная функция List_Add, которая проверяет, есть ли элемент с таким ключом в списке. Если есть, то изменяет его значение, иначе добавляет его.}
Procedure List_Set(Var List:PListRec;Key:Integer;Item:String);
Var
 p:PListRec;
Begin
 p:=Contains(Key);
 If p=Nil Then
   Add(List,Key,Item)
 Else
   p^.Item:=Item
End;



Думаю, что это всё, что может понадобиться для работы со списком в данном контексте...

Могут быть описки, т. к. пишу без компилятора...

Остальное чуть позже... Надо же мне хотя бы вид делать, что работаю smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Accessrx Complaints
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2024 0:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name