Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бинарное Дерево и лин. список, сохранить\востоновить из файла 
V
    Опции темы
ne0n
Дата 3.6.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



вообщем есть следуюие структуры:
Код


//лин. список
struct Fine
{
char time[N];
char type[M];
float price;
Fine *next
}

//бин. дерево

struct Node
{char number[A];
Fine *beg;
Node *left;
Node *right
}


как можно догадаться, это что-то вдухе небольшой базы данных, основанной на бин.дереве.
в качестве описывающих полей используеться лин.список.

Проблема заключаеться в том что я не как не могу сообразить, как это все добро сохранить\востоновить из файла. допустим есть указатель на root(корень). Какие есть идеи по этому вопросу?

Это сообщение отредактировал(а) ne0n - 3.6.2008, 20:06
PM MAIL ICQ   Вверх
jonie
Дата 3.6.2008, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

как можно догадаться, это что-то вдухе небольшой базы данных, основанной на бин.дереве.
нострадамусу и неснилось...
Цитата

Проблема заключаеться в том что я не как не могу сообразить, как это все добро сохранить\востоновить из файла. допустим есть указатель на root(корень)
полюбому для каждого  листа дерева (у тебя это список) тебе надо сначала сохранять количество данных в списке. далее сохраняешь сами данные списка (все кроме указателя).
теперь подробнее о том как сохранить структууру (дерево).
листы мы уже рассмотрели как сохранять.
далее можно сделать например так: сохранять байт, указывающий есть ли предок справа, слева, или они есть вместе.
и для каждого листа(предка) процедура сохранения повторяется рекурсивно.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
rrrFer
Дата 4.6.2008, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW ICQ   Вверх
jonie
Дата 4.6.2008, 05:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



текстовые файлы обладают не самымми лучшими скоростными характеристиками имхо.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ne0n
Дата 4.6.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



всем спасибо, но вопрос уже решен smile , а экзамен удачно завален  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.