Форум программистов, компьютерный форум CyberForum.ru

Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк) - C++

Восстановить пароль Регистрация
 
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
01.05.2013, 17:52     Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк) #1
Добрый вечер всем. Понимаю, что вопрос заезженный, но тем не менее, я вынужден создать тему. Задача -
Имеется необходимость работать с упорядоченными бинарными
деревьями поиска вещественных чисел, линейных многочленов и двоичных строк.
Двоичная строка --- это строка из 0 и 1, их можно сравнивать
в лексикографическом порядке. Линейный многочлен ax+b меньше многочлена
cx+d, если пара <a,b> меньше пары <c,d> в лексикографическом порядке.
Разработайте набор классов, позволяющих работать с такими объектами.
Для деревьев предусмотреть методы: вставка и удаление элемента в дерево, вывод
дерева в поток по уровням (от корня к листьям), ввод из
потока, метод, возвращающий путь в дереве от корня к элементу x
в виде динамического массива элементов.

Проблема - не могу сообразить как правильно организовать работу с шаблонами - сами функции написать не проблема - алгоритмы стандартные.
А вот с шаблонами пока не подружился - вроде бы все просто, но нужен направляющий импульс.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
template <class T>
class Tree
{
    struct tree
    {
        tree* Left;
        tree* Right;
        T Key;
    };
    tree* root;
public:
    
    Tree();
    virtual ~Tree();
    void Destroy(tree*& Root);
    void Add(T val);
    
};
 
template <class T>
Tree<T>::Tree():root->Left(0),root->Right(0),root->Key(0)
{
 
}
template <class T>
void Tree<T>::Destroy(tree*& Root)
{
    if(!Root)
    {
        return;
    }
    Destroy(Root->Right);
    Destroy(Root->Left);
}
На данном этапе не могу сообразить, где взять корень для передачи в Destroy(tree*& Root)
Передавать туда приватный root - но я же не буду иметь к нему доступа из мэйна.
С остальными функциями аналогичная проблема.
И еще, не могу сообразить как работать с шаблонами в мэйне.
Вроде и книжки умные читал...
Короче - или я дурак, или лыжи не едут...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 17:52     Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк)
Посмотрите здесь:

C++ бинарные деревья
Бинарные деревья C++
Бинарные деревья C++
Бинарные деревья C++
C++ бинарные деревья
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 18:37     Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк) #2
Ded_Vasilij, можно сделать функции-хелперы

C++
1
2
3
void Destroy_Helper(tree*& Root){
            Destroy(tree Root);
}
и уже ее можно вызывать из мейна
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 780
Записей в блоге: 10
01.05.2013, 19:35     Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк) #3
)))
Эти функций должны быть в привате класса )))
ты их должен вызывать в нормальном дестрое


~Tree()
{
Destroy(root);
этот же родной root))
}

в мэине зачем вызывать деструктор - это классовский сам вызовется
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
01.05.2013, 20:09  [ТС]     Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк) #4
Qazan, это вроде понятно, а вот допустим добавление элемента- там же тоже рекурсия
Как ее вызывать что на вход подавать? Тот же root? Как вообще это в мейне организовать все?
Yandex
Объявления
01.05.2013, 20:09     Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк)
Ответ Создать тему
Опции темы

Текущее время: 10:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru