Ich bin neu in C-Programmierung und das ist mein erstes Mal an einem komplizierten Programm arbeiten. Das Programm speichert ein Telefonbuch (Name und Nummer) in einem binären Suchbaum. Die Frage, die auftaucht, ist, warum ich einen Fehler mit der Rekursion und allen Zeigern erhalte, die ich in dem Programm verwendete. Mein struct def ist auch wahrscheinlich falsch .. Würde mich freuen, wenn mir jemand auf das Problem hinweisen und wie man es lösen könnte.Zeiger in binäre Suche Baumeinfügungen und Suche in 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;
und hier sind die Funktionen (Ich bin die Art der Funktionen oder ihre Argumente ändern nicht erlaubt):
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 * name [60];' -> 'char name [60];' – BLUEPIXY
Diese feste wenige Fehler durch. – Baldr
'bstree' und' bst_node' sind unterschiedliche Typen. – BLUEPIXY