Главная страница
    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.035 c
4-1105617848
MInd_f
2005-01-13 15:04
2005.02.27
RegQueryValueEx


14-1107492594
SnapIn
2005-02-04 07:49
2005.02.27
Помогите с сетью...


9-1101732389
malij
2004-11-29 15:46
2005.02.27
OpenGl


14-1107777637
Soft
2005-02-07 15:00
2005.02.27
Как под Windows поднять приоритет какого-то порта(TCP/IP)


1-1108203908
tazik
2005-02-12 13:25
2005.02.27
Как выполнить/запустить файл?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский