Mam do zrobienia programik: drzewo binarne do którego wpisujemy poszczególne wyrazy, mają być umieszczane tak jak w słowniku. Waźne jest tylko wyświetlanie drzewa (w formie listy) i dodawanie kolejnych stringów, acha i program ma alokować pamięć dynamicznie na każdy wpisany wyraz. Napisałem coś takiego ale cokolwiek bym nie wpisał program nie dodaje żadnego elementu. Mógłby ktoś spojrzeć co jest nie tak co poprawić?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
struct node {
char s;
struct node *left, *right;
};
void printT(struct node *root) {
if(!root) {
printf("\n\tThe tree is empty\n");
}
else {
printT(root->left);
printf("%c\t", root->s);
printT(root->right);
}
printf("\n");
}
int add(struct node* root) {
char *name, string[MAX];
struct node *new_s;
printf("\n\tPut string\n");
gets(string);
name=(char*)malloc(strlen(string)+1);
if(!name) {
return 1;
}
strcpy(name,string);
new_s=(node*)malloc(sizeof(node));
new_s->left=NULL;
new_s->right=NULL;
new_s->s=*name;
if(!root) {
root=new_s;
}
if(strcmp(string,&(root->s))<0) {
root->left=new_s;
}
else {
root->right=new_s;
}
if(strcmp(string,&(root->s))<0) {
add(root->left, string);
}
else {
add(root->right, string);
}
return 0;
}
int menu(void) {
int m;
printf("\n\t_______________________\n");
printf("\tWhat do you want to do?\n\n");
printf("\t1. DISPLAY tree?\n");
printf("\t2. ADD element to tree?\n");
printf("\t3. EXIT program\n\n");
do {
printf("\tYour choice is: ");
scanf("%d", &m);
flushall();
} while(m<0 || m>3);
return m;
}
int main() {
char choice, str[MAX];
node *head = NULL;
for(;;) {
choice=menu();
switch(choice) {
case 1:
printT(head);
break;
case 2:
add(head);
break;
case 3:
exit(0);
free(head);
}
}
return 0;
}