Ik ben vrij nieuw in C en ik ben op zoek naar een binaire boom in C, die een nummer en een string op te slaan en ze vervolgens afdrukken off bv uit te voeren
1 : Bread
2 : WashingUpLiquid
etc.
De code die ik tot nu toe is:
#include <stdio.h>
#include <stdlib.h>
#define LENGTH 300
struct node {
int data;
char * definition;
struct node *left;
struct node *right;
};
struct node *node_insert(struct node *p, int value, char * word);
void print_preorder(struct node *p);
int main(void) {
int i = 0;
int d = 0;
char def[LENGTH];
struct node *root = NULL;
for(i = 0; i < 2; i++)
{
printf(Please enter a number: \n);
scanf(%d, &d);
printf(Please enter a definition for this word:\n);
scanf(%s, def);
root = node_insert(root, d, def);
printf(%s\n, def);
}
printf(preorder : );
print_preorder(root);
printf(\n);
return 0;
}
struct node *node_insert(struct node *p, int value, char * word) {
struct node *tmp_one = NULL;
struct node *tmp_two = NULL;
if(p == NULL) {
p = (struct node *)malloc(sizeof(struct node));
p->data = value;
p->definition = word;
p->left = p->right = NULL;
}
else {
tmp_one = p;
while(tmp_one != NULL) {
tmp_two = tmp_one;
if(tmp_one->data > value)
tmp_one = tmp_one->left;
else
tmp_one = tmp_one->right;
}
if(tmp_two->data > value) {
tmp_two->left = (struct node *)malloc(sizeof(struct node));
tmp_two = tmp_two->left;
tmp_two->data = value;
tmp_two->definition = word;
tmp_two->left = tmp_two->right = NULL;
}
else {
tmp_two->right = (struct node *)malloc(sizeof(struct node));
tmp_two = tmp_two->right;
tmp_two->data = value;
tmp_two->definition = word;
tmp_two->left = tmp_two->right = NULL;
}
}
return(p);
}
void print_preorder(struct node *p) {
if(p != NULL) {
printf(%d : %s\n, p->data, p->definition);
print_preorder(p->left);
print_preorder(p->right);
}
}
Op dit moment lijkt te werken voor de intjaren, maar de beschrijving deel drukt alleen uit voor de laatste ingevoerd. Ik neem aan dat het iets te maken heeft met aanwijzingen over de charserie, maar ik had geen geluk om het te laten werken. Enig idee of advies nodig?













