Ben C için oldukça yeni ve bir sayı ve bir dize depolamak ve daha sonra örneğin onları yazdırır C bir ikili ağacı uygulamak çalışıyorum
1 : Bread
2 : WashingUpLiquid
etc.
Bugüne kadar sahip kodudur:
#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);
}
}
Şu anda için çalışmak gibi ints ancak açıklama kısmı sadece girilen sonuncusu için dışarı yazdırır. Bunun üzerine işaretçiler ile ilgili bir şey vardır varsayalım chardizinin ama işe alma şansı olmadığını. Herhangi bir fikir veya tavsiye?













