BSTでプロジェクトを実行すると、挿入機能のどこかに論理障害があり、見つからないようです。バイナリ検索ツリー:挿入機能でポインタが失われました
挿入機能:この機能を使用するには
int bst_insert (bst_t *tree, bst_key_t key)
{
bst_node_t *node, *temp_node;
if(tree == NULL) {
printf("Invalid tree pointer.\n");
return;
}
if(tree->root == NULL) {
node = (bst_node_t *)malloc(sizeof(bst_node_t));
node->left = node->right = NULL;
node->key = key;
tree->root = node;
return 1;
}
temp_node = tree->root;
while(1) {
if(temp_node == NULL) {
node = (bst_node_t *)malloc(sizeof(bst_node_t));
node->left = node->right = NULL;
node->key = key;
temp_node = node;
return 1;
}
if(temp_node->key == key) {
temp_node->data_ptr = data;
return 0;
} else if(key < temp_node->key) {
temp_node = temp_node->left;
} else if(temp_node->key < key) {
temp_node = temp_node->right;
}
}
}
(TREE->ルートがnullであるので、文の場合、それはその内側に出てからでしょう)、一つのノードを挿入するだけで正常に動作しますが、私は試してみて、秒を挿入してこの関数を残すと、ツリーには最初のノードしかありません。
私は関連情報を提供することを忘れた場合にお知らせください。
投票に参加してください:検査であなたのコードのエラーを見つけ出すことは、生産的ではありません。デバッガやprintステートメントを使用して問題を特定(または少なくとも分離)してから、さらに具体的な質問に戻ってください。 –
私の間違いは、私がそれをもっと絞り込むことができるかどうかを見るでしょう。 –