![]() |
|
Модераторы: bsa |
![]()
|
|
| ne0n |
|
|||
|
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: нет Всего: 11 |
вообщем есть следуюие структуры:
как можно догадаться, это что-то вдухе небольшой базы данных, основанной на бин.дереве. в качестве описывающих полей используеться лин.список. Проблема заключаеться в том что я не как не могу сообразить, как это все добро сохранить\востоновить из файла. допустим есть указатель на root(корень). Какие есть идеи по этому вопросу? Это сообщение отредактировал(а) ne0n - 3.6.2008, 20:06 |
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
теперь подробнее о том как сохранить структууру (дерево). листы мы уже рассмотрели как сохранять. далее можно сделать например так: сохранять байт, указывающий есть ли предок справа, слева, или они есть вместе. и для каждого листа(предка) процедура сохранения повторяется рекурсивно. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| rrrFer |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: 0 Всего: 1 |
ne0n,
да как пидумаешь так и сохранять. Например, можно так: обходишь дерево, при этом записываешь в файл поля структуры, разделяя их, например символом "|", а после этого символа пишешь сколько у узла было ненулевых ссылок на другие узлы. Можно и не разделять символом "|" - просто для наглядности написал. А также можно(также для наглядности) запись в файл сделать за 2 обхода, сначала записать в файл содержимое узлов, а потом(отдельно) записать количество ненулевых ссылок(по порядку их определять к какому узлу какая относится. Можно еще записать сначала самую левую ветвь дерева, в первой строчке, а в последующих строчках писать правые ветви, начиная с листа(самого удаленного от вершины дерева узла) левой ветви, т.е. для струтуры, в которой только одно поле: struct s{char ss[15];} будет примерно так(если полей больше принцип тотже): мама мыла раму NULL NULL мама NULL NULL мыла мама NULL NULL мама NULL NULL для такого дерева раму мыла мыла мама мама мама мама NULL NULL NULL NULL NULL NULL NULL NULL |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
текстовые файлы обладают не самымми лучшими скоростными характеристиками имхо.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ne0n |
|
|||
|
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: нет Всего: 11 |
всем спасибо, но вопрос уже решен
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |