Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Вниз

Хранение и считывание древовидной структуры данных   Найти похожие ветки 

 
TP   (2005-02-08 12:20) [0]

Направьте на путь истинный.
Существует древовидная структура, управляю я ей
с помощью одного списка TList содержащего узлы, причем
все(и родительские и дочерние).
Каждый узел содержит указатель на его родителя,
а также список TList который содержит
непосредственно указатели на данные(дочерние узлы и непосредственно назовем
их Items-ы(пункты)).
Структура эта вся полностью динамическая и отрисовываю я ее
динамически.

Но вот как лучше сохранить все это в типизированный файл и
потом считать оттуда. Я так понимаю придетя в каждой записи
файла хранить помимо данных еще и информацию что это узел или пункт,
кроме того содержит ли это узел подузел и т.д.
Т.е. идем по файлу натыкаемя на узел - далее идут подузлы и данные,
определить это все можно с помощью индетификатора . Например
узел 1 содержит подузел(или пункт) 1.1 в свою очередь
если это подузел, то  имеет свой ID 1.1.1 и например пункты 1.1.2/1.1.3 и т.д.
Значит запись должна иметь такой ID

TType=record
............
ID:array [1..High(Byte)] of Byte;
...........
end;

Я на верном пути или нет.Как это лучше осуществить ?


 
Юрий   (2005-02-09 19:18) [1]

Путь похож на верный, но я сделал бы иначе... По поводу способов хранения таких структур написано очень много. Попробуй следующее: я рискну предположить, что сия структура описана классически
Type
PTree = ^TTree;
TTree = Record
         Inf : <какой-то тип данных>;
         Links: Array [1..N] of PTree;
        End;

А дальше произведи его балансировку и начни сохранять ветви дерева С ТЕРМИНАЛЬНЫХ ЭЛЕМЕНТОВ по уровням вверх. В результате,последняя запись - корень дерева. Зная в какую сторону был обход при сохранении, начинаешь его восстанавливать, а чтобы не ошибиться, можешь применить свою идею с ID, только хранить ты в ней будешь номер уровня, на котором находитя этот элемент.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.06 c
1-1108003250
vidiv
2005-02-10 05:40
2005.02.27
Защита программы от копирования.


1-1108282334
Bogdan
2005-02-13 11:12
2005.02.27
Исчезающая форма


4-1104927780
Sphinx
2005-01-05 15:23
2005.02.27
Макет TAppAPI


14-1107540699
Aldor_
2005-02-04 21:11
2005.02.27
Exception vs ErrorCode


1-1108454685
juice
2005-02-15 11:04
2005.02.27
Linker. Генерация C++ object files





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский