Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
#1

Шаблонный класс бинарного дерева - C++

14.06.2012, 21:33. Просмотров 883. Ответов 10
Метки нет (Все метки)

всем привет, возник такой вопрос
вот есть шаблонный класс бинарного дерева поиска, задается тип ключа и тип данных.
есть метод, который по идее ищет узел с заданным ключом, и возвращает данные.
но вот в чем проблема, если узел с такими данными не найдет, то что возвращать, если тип данных в дереве задается пользователем?
вот -
C++
1
typeData find(typeKey key) const; // найти нужную информацию в дереве.
что делать если узел не найден?

Добавлено через 1 минуту
вернуть ноль какой-нибудь, но как это сделать, если мы тип не знаем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2012, 21:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблонный класс бинарного дерева (C++):

Класс для бинарного дерева - C++
Здравствуйте! Помогите, пожалуйста, я не вижу ошибок и не понимаю, почему программа не видит меню, не работает так, как нужно( Общее...

Класс для бинарного дерева - C++
Добрый день, рзбераю бинарное дерево но что-то не особо понимаю. Может есть у кого-то простой пример с минимумом методов и желательно с...

Реализация бинарного дерева, используя класс - C++
Доброго времени суток. Ниже пример бинарного дерева, с использованием структуры и двух функций: заполнением и прямым обходом: #include...

Дополнить класс, включив метод подсчета числа узлов заданного бинарного дерева - C++
Изучить приведенный пример реализации класса «Дерево двоичного поиска», для которого реализованы следующие схемы обхода бинарного дерева: ...

Запись бинарного дерева в файл и восстановление из него этого дерева - C++
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на структуру с данными, 2 и 3й указатель на...

Написать шаблон бинарного дерева с функцией распечатки дерева - C++
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

10
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
14.06.2012, 21:43 #2
Вернуть нулевой объект. Просто ноль вернуть в этом случае нельзя.
Переменная принимающая объект должна по какому-то из признаков понять, что вернут нулевой объект. Например, если все указатели объекта указывают на него самого (то есть на собственный индекс)

Передаваемый в бинарное дерево тип должен быть элементом объекта.
1
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
14.06.2012, 21:54  [ТС] #3
Hrundel, спасибо за ответ, но не до конца понял
ведь переменная, принимающая результат метода find будет типа typeData.
0
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
14.06.2012, 22:03 #4
Если пользовать передает стандартные типы, например int или float или что-то другое, то и проблемы нет - можно вернуть ноль или любое другое число не входящее в предел определения. Если передает класс или объект определенный в программе, но на выбор, то все эти классы или объекты нужно расширить на один указатель того же типа, который будет указывать либо на собственный объект (нулевой объект), либо на другой (например, родительский, дочерний или просто соседний) объект.
1
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
14.06.2012, 22:19  [ТС] #5
Hrundel, я вроде понял это, спасибо
а подобного никак нельзя избежать? сделать что-то проще может, наверняка же раньше сталкивались с подобным
я думал над этим, но пока безрезультатно )
0
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
14.06.2012, 22:24 #6
Цитата Сообщение от neske Посмотреть сообщение
а подобного никак нельзя избежать? сделать что-то проще
Навряд ли. Это, сам по себе, очень тривиальный способ.
А можно увидеть, какие типы данных будут передаваться? Особенно, если это классы. Тогда можно подумать как это можно упростить.
1
go
Эксперт С++
3586 / 1366 / 129
Регистрация: 16.04.2009
Сообщений: 4,527
14.06.2012, 22:24 #7
neske, пускай функция возвращает указатель. Тогда можно вернуть нулевой указатель.
1
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
14.06.2012, 22:26 #8
Цитата Сообщение от go Посмотреть сообщение
пускай функция возвращает указатель. Тогда можно вернуть нулевой указатель
Или так.
0
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
14.06.2012, 22:28  [ТС] #9
мм, и действительно, спасибо )
0
rangerx
1940 / 1549 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
14.06.2012, 23:43 #10
neske, правильнее было бы реализовать и возвращать итератор, а не указатель.
1
neske
1508 / 875 / 84
Регистрация: 26.03.2010
Сообщений: 2,988
15.06.2012, 00:02  [ТС] #11
rangerx, ну да, наверное
вот как-то так http://shatalov.su/ru/articles/algorithms/tree.php , да?
0
15.06.2012, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2012, 00:02
Привет! Вот еще темы с ответами:

Построение бинарного дерева на основе не бинарного - C++
В лабораторной работе есть такое задание: Создайте процедуру построения бинарного дерева на основе не бинарного. Объясните как вообще...

Создание бинарного дерева из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*& Tree) { Bin q;

Класс Matrix: реализовать шаблонный класс для двумерных массивов - C++
Доброго времени суток. У меня вопрос: я создал класс Array со внутренним динамическим массивом и объекты этого типа смог создать и я ими...

Шаблонный класс и класс одномерный массив - C++
Задание: протестировать класс шаблон, с обычными типами данных я понял как делать, а как передать в шаблон свой класс я не понял. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru