Είμαι αρκετά νέος σε C και εγώ προσπαθώ να εφαρμόσει ένα δυαδικό δέντρο σε C που θα αποθηκεύσετε έναν αριθμό και μια σειρά και στη συνέχεια να τις εκτυπώσετε από π.χ.
1 : Bread
2 : WashingUpLiquid
etc.
Ο κώδικας που έχω μέχρι στιγμής είναι:
#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);
}
}
Προς το παρόν φαίνεται να δουλεύει για τους ints, αλλά το τμήμα περιγραφή εκτυπώνει μόνο για το τελευταίο άρχισε. Υποθέτω ότι έχει να κάνει με δείκτες για τη charσειρά, αλλά δεν είχα την τύχη να μπορεί να λειτουργήσει. Οποιεσδήποτε ιδέες ή συμβουλές;













