Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2010, 09:43   #1
интеграл
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 13
По умолчанию Поиск по бинарному дереву

Привет !
Легко построить бинарное дерево используя простую структуру
Допустим:
Код:
struct node {
                             int data;
                             struct node *left;
                             struct node *right;
                            };
Усложним
Имеем следующие данные:
1.Название Книги(string), 2. Год издания(int) 3. Автор(string).
Построить бинарное дерево, и функции работающие с деревом: а. Вывести всю информацию(Название/Год/Автор) о книгах в алфавитном порядке по названию книги; б. Вывести всю информацию(Название/Год/Автор) о книгах в порядке возрастания года издания.

Благодарен за любую помощь
Спасибо

Последний раз редактировалось интеграл; 01.05.2010 в 09:47.
интеграл вне форума Ответить с цитированием
Старый 01.05.2010, 10:10   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Во-первых,
Код:
struct node {
                             book data;
                             struct node *left;
                             struct node *right;
                            };
Во-вторых, при сортировке используем не operator<, а функцию less, которая передается либо через указатель, либо как параметр шаблона (соответственно, тогда node будет шаблонным классом). Реализуем несколько функций, выполняющих задачу less и передаем их в функцию сортировки в зависимости от наших задач.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 01.05.2010, 11:11   #3
интеграл
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 13
По умолчанию

не понимаю


Код:
struct node {
                             book data;    ???????
                             struct node *left;
                             struct node *right;
                            };
интеграл вне форума Ответить с цитированием
Старый 01.05.2010, 11:52   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Надо объявить тип книги. Если вы пишите на си (не на C++)
Код:
struct book //Тип книги
{
//...
};

struct node //Узел дерева
{
struct book* data;
struct node* left;
struct node* right;
};

int AbcLess(struct book* b1, struct book* b2) //Функция, возвращающая истину, если книга b1 раньше по алфавиту, чем b2, ложь - в противном случае
{
//...
}

int YearLess(struct book* b1, struct book* b2) //Функция, возвращающая истину, если b1 выпущена раньше, чем b2, ложь - в противном случае
{
//...
}

void sort(struct node* tree, struct node* array, int n, int (*less)(struct book* b1, struct book* b2))
//Функция сортировки - строит дерево с корнем tree на основе данных из массива array размером n, причем критерий сортировки - функция less, передаваемая по указателю
{
//...
}

int main()
{
//...
struct node* root;
struct book* Library;
int LibrarySize;
//...
sort(root, Library, LibrarySize, AbcLess); //Сортируем по алфавиту
//...
sort(root, Library, LibrarySize, YearLess); //Сортируем по году издания
}
Думаю, вам стоит еще почитать насчет указателей на функции.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск в БД kuzmich БД в Delphi 8 09.02.2010 11:05
поиск - ? Evgenii БД в Delphi 11 22.07.2009 19:41
Проход по дереву. Ozerich Общие вопросы Delphi 1 05.10.2008 17:33
TreeView и PageControl (переключение вкладок по дереву) Nevy Общие вопросы C/C++ 5 17.08.2008 19:17
Поиск Andr Microsoft Office Excel 2 18.07.2007 11:49