Кровавые ошибки компилятора Dev-C ++ * Двоичные деревья

Я хотел бы получить отзыв о моем коде, пожалуйста. Это задание для школы, где нас попросили написать функцию, которая меняет местами двоичные деревья слева и справа. Наш класс, который дал нам наш профессор, был swapBinaryTrees, а остальное оставлено на наше усмотрение. Я получаю много ошибок компилятора, и я не уверен, где я ошибаюсь с моим синтаксисом. Я получаю ошибки, когда я компилирую его, как в строке 14 ожидаемого инициатора объявления ‘<‘строка в ссылке

void binaryTreeSearch<elemType>::swapSubtreeNodes()

У меня та же ошибка для строки 19, которая

void binaryTreeSearch<elemType>::swapSubtreeNodes(nodeType<elemType> *p)

для обоих вышеперечисленных у меня есть другая ошибка, которая говорит, что ожидание ‘;’ до ‘<знак
Затем я получаю необъявленный идентификатор в моей основной функции для

binaryTreeSearch<int> tree;

Я также получаю ожидаемое первичное выражение перед «int» и ожидаемым ‘;’ перед «int» он говорит мне, что cout и cin не объявлены, я не знаю, что здесь происходит с сеном. Я выложу весь свой код ниже, любая помощь будет принята с благодарностью.

template <class elemType>
struct nodeType
{
elemType info;
nodeType<elemType> *lLink;
nodeType<elemType> *rLink;
};
template <class elemType>
class swapSubtreeNodes
{

};
template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes()
{
swapSubtreeNodes(root);
}
template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes(nodeType<elemType> *p)
{
root = temp;
nodeType<elemType> *root;
nodeType<elemType> *temp;
if (p == null)
{
return;
}
else
{
swapSubtreeNodes(p->lLink);
swapSubtreeNodes(p->rLink);
temp = p->lLink;
p->lLink = p->rLink;
p->rLink = temp;
}
}
int main()
{
binaryTreeSearch<int> tree;
int num;
cout << "This is how we swap'em" << endl;
cout << "Insert number (press enter after each one entered)." << endl;
cout << "Enter -999 to complete" << endl;
tree.insert(0);
cin >> num;
while (num != -999)
{
tree.insert(num);
cin >> num;
}
cout << "Your swapped binary tree is " << endl;
tree.swapSubtreeNodes();
tree.printTree();
cout << endl;}

0

Решение

Вы не объявили binaryTreeSearch тип. Поэтому вы не можете реализовать функции-члены для него. Ваш компилятор говорит вам, что он понятия не имеет, что вы подразумеваете под

template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes()

в положении с < потому что он не понимает, что вы намерены binaryTreeSearch быть классом.


Что вы делаете, когда пишете:

template <class elemType>
void binaryTreeSearch<elemType>::swapSubtreeNodes()
{
swapSubtreeNodes(root);
}

это; Вы говорите C ++, что намереваетесь реализовать функцию-член swapSubTreeNodes типа int ()() который принадлежит структурированному типу (т.е. class или struct) имени binaryTreeSearch который определяется одним параметром. Однако ваш компилятор (на самом деле любой компилятор) жалуется, потому что такого типа нет. Как вы решите эту проблему, зависит от того, что вы действительно намеревались сделать. Одним из вариантов может быть объявление этого типа:

template <class elemType>
class binaryTreeSearch // I really recommend to write types Uppercase!
{
private:
nodeType<elemType>* root;
//                  ^---- that's the variably you are trying to
//                        access in your original post
public:
void swapSubtreeNodes();
void swapSubtreeNodes(nodeType<elemType>*);
};

Это не исправит все ошибки, но, вероятно, это то, что вы намеревались сделать. Вы также можете добавить правильный конструктор и деструктор.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]