Я создаю двоичное дерево как маленький проект, чтобы узнать C. Вот вам весь код.Ошибка инициализации инициализации C
typedef struct {
int value;
struct Node *leftchild;
struct Node *rightchild;
struct Node *parent;
} Node;
typedef struct {
Node *root;
} BinaryTree;
void newBT(BinaryTree *_bt) {
_bt->root = 0;
return;
};
Node* makeNode(int _value) {
Node *node;
node->value = _value;
node->leftchild = 0;
node->rightchild = 0;
node->parent = 0;
return node;
};
void insert(BinaryTree* _bt, int _value) {
_bt->root = makeNode(_value);
return;
};
Теперь я проверил функцию моего makeNode() и она работает, как предполагалось, и я проверил его с помощью функции есть(), которая пересекает список и возвращает истину, если он находит узел с заданным значением, возвращается false в противном случае. Это первая прокомментированная строка в main() ниже. Когда я передаю свой BinaryTree в insert() и объявляю ту же строку с помощью указателя, я получаю ошибку шины: 10.
int main() {
BinaryTree bt;
newBT(&bt);
//bt.root = makeNode(14);
insert(&bt, 14);
//printf("%d \n", has(&bt, 14));
return 0;
}
Любые предложения?
все, что является допустимым примером неопределенного поведения :) (форматируйте жесткий диск, печатные работы Шекспира, включите тостер). Я думаю, вы имеете в виду «общий пример», – pm100