私はCプログラミングを初めて使いました。これは初めての複雑なプログラムの作業です。プログラムは、電話帳(名前と番号)をバイナリ検索ツリーに配置します。発生する問題は、プログラムで使用した再帰とすべてのポインタでエラーが発生する理由です。 私のstruct defもおそらく間違っています。 誰かが私に問題を指摘し、それを解決する方法を教えてくれたら幸せでしょうか。バイナリ検索でのポインタツリーの挿入とCでの検索
typedef struct _bstree {
char * name[60];
unsigned long phone;
struct bstree *left;
struct bstree *right;
}bstree;
typedef struct _bst_node {
int value;
struct node* next;
}bst_node;
と、ここでの機能(私は関数やその引数の種類を変更することはできませんよ)です:あなたのツリー構造はleft
とright
を持っていないのはなぜ
void bst_insert_node(bstree* bst, unsigned long phone, char *name) {
if (bst == NULL) {
bstree *newNode = (bstree *)malloc(sizeof(bstree));
newNode->phone = phone;
strcpy(newNode->name,name);
newNode->left = NULL;
newNode->right = NULL;
}
else if (bst->phone>phone) {
bst_insert_node(bst->left,phone, name); //ERROR
}
else {
bst_insert_node(bst->right, phone, name); //ERROR
}
}
bst_node* find_node(bstree* bst, unsigned long phone) {
if (bst==NULL) {
printf("Cannot find Number");
return NULL;
}
//if phone ist root
if (phone== bst->phone)
return bst; //ERROR
bstree* searching = NULL;
//left search
searching = find_node(bst->left,phone); //ERROR
if (searching)
return searching; //ERROR
// right search
searching = find_node(bst->right,phone); //ERROR
if (searching)
return searching; //ERROR
if (searching)
return searching; //ERROR
return NULL;
}
を試みる 'のchar *名[60];' - > 'char型の名前[60];' – BLUEPIXY
これは、いくつかのエラー感謝を修正しました。 – Baldr
'bstree'と' bst_node'は異なるタイプです。 – BLUEPIXY