Ошибка: ожидаемый конструктор, деструктор или преобразование типа перед символом '(' - PullRequest
0 голосов
/ 07 марта 2012

Я получаю сообщение об ошибке в функции * insert_nodes:

ошибка: ожидаемый конструктор, деструктор или преобразование типов перед '(' токен

У меня также есть проблема с той же функцией, из-за которой мне нужно переопределить «узлы int» как параметр функции. но я думаю, что нет необходимости писать это так:

*insert_nodes(start, int nodes)

вместо того, чтобы быть таким:

*insert_nodes(start,nodes)

Еще одна ошибка, связанная с get в getch (). При компиляции в Netbeans он просто показывает ошибку в этом месте, но не указывает, какой тип ошибки.

struct tree_traversal
{
    int data;
    tree_traversal *left; //left subtree
    tree_traversal *right; //right subtree
};

tree_traversal *insert_nodes(tree_traversal *start, int nodes);
void preOrderTraversal(tree_traversal *start);
void postOrderTraversal(tree_traversal *start);
void inOrderTraversal(tree_traversal *start);
int counter = 1;

int main(int argc, char **argv)
{
    int choice, nodes;
    do
    {
        switch(choice)
        {
             case 1:
             cout<<"\n\t\a\a Enter the Values:\a\a";
             cin>>nodes;
             start=insert_nodes(start,nodes);
             break;

             case 2:
             cout<<"\n\t\a\a The Values for In-Order Tree traversal is: \a\a"<<endl;
             preOrderTraversal(start);
             break;

             case 3:
             cout<<"\n\t\a\a The Values for In-Order Tree traversal is: a\a"<<endl;
             postOrderTraversal(start);
             break;

             case 4:
             cout<<"\n\t\a\a The Values for In-Order Tree traversal is: \a\a"<<endl;
             inOrderTraversal(start);
             break;

             case 5:
             exit(0);
        }
    } while(choice != 5);
    return 0;
}

tree_traversal *insert_nodes(tree_traversal *start, int nodes)
{
    if(start == NULL)
    {
        start = new tree_traversal;
        start ->left = start ->right = NULL;
        start ->data = nodes;
        counter++;
    }
    else if(counter%2 == 0)
        start ->left = insert_nodes(start ->left,nodes);
    else
        start ->right = insert_nodes(start ->right,nodes);

    return(start);
}

void preOrderTraversal(tree_traversal *start)
{
    if(start != NULL)
    {
        cout<<start ->data;
        preOrderTraversal(start->left);
        preOrderTraversal(start->right);
        getch();
    }
}

void postOrderTraversal(tree_traversal *start)
{
    if(start != NULL)
    {
        postOrderTraversal(start->left);
        postOrderTraversal(start->right);
        cout<<start ->data;
        getch();
    }
}

void inOrderTraversal(tree_traversal *start)
{
    if(start != NULL)
    {
        inOrderTraversal(start->left);
        cout<<start ->data;
        inOrderTraversal(start->right);
        getch();
    }
}

Ответы [ 2 ]

4 голосов
/ 07 марта 2012
*insert_nodes(start, int nodes)

должно быть

tree_traversal *insert_nodes(tree_traversal *start, int nodes)
^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^

Вы забыли упомянуть тип данных для возвращаемого типа и аргумента функции в определении функции.

Да, вам нужно указать типы данных аргументов функции в определении функции.

0 голосов
/ 07 марта 2012

В вашем коде:

*insert_nodes(start, int nodes)

параметр запуска не имеет типа!

...