Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
6-1103482383
MiHOY
2004-12-19 21:53
2005.02.27
Как отправить почту и поличить ответ от сервера


1-1108326370
Kubic
2005-02-13 23:26
2005.02.27
ListView


14-1107348310
saNat
2005-02-02 15:45
2005.02.27
Автоматизация


6-1102774300
mazai
2004-12-11 17:11
2005.02.27
создание FTP сервера


14-1107708180
QuasiLamo
2005-02-06 19:43
2005.02.27
Хороший дефрагментатор