2017-01-14 25 views
1

Я пишу простую реализацию дерева AVL с использованием C. У меня возникают проблемы с моим кодом в разных частях. Иногда я получаю эту ошибку, иногда разыменование работает очень хорошо.Указатель разыменования неполного типа (struct node)

Вот как мой структура узла выглядит:

struct Node 
{ 
    int data; 
    struct Node *left; 
    struct Node *right; 
    int height; 
}; 

Вот где я получаю ошибку разыменования (именно на если (данные < (p-> данные)))

struct node* search(struct node* p, int data) 
{ 
    if (!p) 
     return NULL; 
    if (data < (p->data)) 
     return search(p -> left, data); 
    else if (data > p -> data) 
     return search(p -> right, data); 
    else 
     return p; 
} 

Также здесь:

struct Node remove_min(struct Node *x) 
{ 
if (x->left == NULL) 
    return x->right; 
x->left = deleteMin(x->left); 
return x; 
} 

Любая помощь будет оценена по достоинству. Thanks

+0

Это определение «struct Node» и код, в котором вы видите эту ошибку в том же файле? Если нет, можете ли вы более подробно рассказать о том, как организован ваш код, какие выглядят ваши утверждения '# include' и т. Д.? В идеале вы можете предоставить простой проигрыватель, который полностью продемонстрирует проблему. – larsks

+0

где ваш код, когда вы вызываете поиск, я имею в виду ваши коды основного? –

+0

Я отправил весь свой код в качестве ответа, вы можете посмотреть его там, спасибо. –

ответ