Я просто хочу предисловие к этому, сказав, что я немного новичок во всем этом, поэтому, пожалуйста, несите меня. Поэтому для нашего задания мы должны реализовать свое собственное двоичное дерево поиска. Мы должны использовать этот BST для создания адресной книги объектов типа ExtPersonType (которые имеют разные члены и т. Д.).Извлечение объектов в двоичном дереве поиска
По большей части все выглядит хорошо и работает, но для жизни я не могу понять эти три функции. Я должен по существу отобразить всю информацию об этом объекте, выполнив поиск по дереву для фамилии, месяца и статуса.
Все они очень схожи, поэтому я не буду распространяться со всеми из них. Если кто-то может указать мне в правильном направлении для одного из них, я верю, что смогу понять это. Заранее спасибо за помощь!
Я удалил много кода, чтобы достичь высоких баллов. Дайте мне знать, если вы хотите, чтобы я отправлять больше
BinarySearchTree
template<class T>
class BinarySearchTree
{
private:
Node<T>* root;
public:
BinarySearchTree() { root = NULL; }
void displayInfo(T value);
bool search(T value);
template <class T>
bool BinarySearchTree<T>::search(T value)
{
Node<T>* tree = root;
while (tree)
{
if (tree->value)
{
return true;
}
else if (tree->value > value)
{
tree = tree->left;
}
else
{
tree = tree->right;
}
}
return false;
}
template <class T>
void BinarySearchTree<T>::displayInfo(T value)
{
Node<T>* tree = root;
while (tree)
{
if (tree->value)
{
cout << tree->value;//I have overloaded << here to display objects (works btw)
}
else if (tree->value > value)
{
tree = tree->left;
}
else
{
tree = tree->right;
}
}
}
addressbook.cpp.
AddressBook<ExtPersonType> addressBook;
ExtPersonType person;
int main()
{
//reads input from file
person.setInfo(firstName, lastName,
month, day, year,
street, city, state, zipCode,
phoneNumber, status);
addressBook.insert(person);
}
}
void optionThree() //The crux of my problem
{
string lastName;
cout << "Enter the last name of the person: ";
cin >> lastName;
addressBook.printInfoOf(lastName);
}
addressbook.h
template <class elemType>
class AddressBook : public BinarySearchTree<elemType>
{
public:
AddressBook();
void printInfoOf(string);
void printNameInTheMonth(int);
void printNamesWithStatus(string);
};
// Print - Info Of
template <class elemType>
void AddressBook<elemType>::printInfoOf(string lastName)
{
if(person.getLastName() == (last))
BinarySearchTree::displayInfo(person);
else
cout << "Not found" << endl;
}
Как вы можете видеть, что я понятия не имею, что я делаю. Еще раз, спасибо!
ошибка C2451: условное выражение типа «ExtPersonType» является незаконным Нет оператора определенного пользователя преобразования доступно, который может выполнить это преобразование,> или оператор не может называться документов \ Visual Studio 2010 \ Projects \ programming4 \ binarysearchtree.h (234):> при компиляции шаблона класса член функция 'аннулируются> BinarySearchTree :: displayInfo (T)' с [ T = ExtPersonType ]
Является ли 'ExtPersonType' конвертируемой в' bool'? – phantom
ExtPersonType - это совершенно другой класс, который далее наследует от других классов, таких как AddressType (класс для установки адреса), DateType (класс для установки dob), чтобы по существу сделать «Лицо», которое имеет имя, фамилию, номер телефона, адрес и т. Д. ... – Tacos
Если 'ExtPersonType' не конвертируется в' bool', то почему он используется для оператора if: 'if (tree-> value)' в displayInfo? – phantom