| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Бинарное Дерево и лин. список |
| Автор: ne0n 3.6.2008, 20:05 | ||
вообщем есть следуюие структуры:
как можно догадаться, это что-то вдухе небольшой базы данных, основанной на бин.дереве. в качестве описывающих полей используеться лин.список. Проблема заключаеться в том что я не как не могу сообразить, как это все добро сохранить\востоновить из файла. допустим есть указатель на root(корень). Какие есть идеи по этому вопросу? |
| Автор: jonie 3.6.2008, 23:07 | ||||
теперь подробнее о том как сохранить структууру (дерево). листы мы уже рассмотрели как сохранять. далее можно сделать например так: сохранять байт, указывающий есть ли предок справа, слева, или они есть вместе. и для каждого листа(предка) процедура сохранения повторяется рекурсивно. |
| Автор: rrrFer 4.6.2008, 04:12 | ||
ne0n,
да как пидумаешь так и сохранять. Например, можно так: обходишь дерево, при этом записываешь в файл поля структуры, разделяя их, например символом "|", а после этого символа пишешь сколько у узла было ненулевых ссылок на другие узлы. Можно и не разделять символом "|" - просто для наглядности написал. А также можно(также для наглядности) запись в файл сделать за 2 обхода, сначала записать в файл содержимое узлов, а потом(отдельно) записать количество ненулевых ссылок(по порядку их определять к какому узлу какая относится. Можно еще записать сначала самую левую ветвь дерева, в первой строчке, а в последующих строчках писать правые ветви, начиная с листа(самого удаленного от вершины дерева узла) левой ветви, т.е. для струтуры, в которой только одно поле: struct s{char ss[15];} будет примерно так(если полей больше принцип тотже): мама мыла раму NULL NULL мама NULL NULL мыла мама NULL NULL мама NULL NULL для такого дерева раму мыла мыла мама мама мама мама NULL NULL NULL NULL NULL NULL NULL NULL |
| Автор: jonie 4.6.2008, 05:49 |
| текстовые файлы обладают не самымми лучшими скоростными характеристиками имхо. |
| Автор: ne0n 4.6.2008, 21:52 |
| всем спасибо, но вопрос уже решен |