Per prima cosa i programmi andrebbero compilati con
gcc -Wall ...
che ti dà anche tutti i warning.
Poi mi sembra strano che non ti funzioni: io ho provato a compilarlo con gcc su linux e non ho problemi.
Hai fatto copia-incolla del codice che ti avevo postato? Per sicurezza lo rimetto:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _node
{
char *key;
struct _node *left;
struct _node *right;
} node;
node* insertRec(node *tree, char *input)
{
node *new=(node*) malloc(sizeof(node));
/* ATTENZIONE!!! */
new->key = malloc(100 * sizeof(char));
strcpy(new->key, input);
new->left=NULL;
new->right=NULL;
if(tree==NULL)
{
return new;
}
if((strcmp(tree->key, input)>=0)) tree->left=insertRec(tree->left, input);
else tree->right=insertRec(tree->right, input);
return tree;
}
void stampa_albero(node* tree)
{
if(tree == NULL)
return;
stampa_albero(tree->left);
printf("%s ", tree->key);
stampa_albero(tree->right);
}
int main()
{
int i, n;
node *tree = NULL;
char *input;
input = (char*) malloc(101*sizeof(char));
printf("Numero di stringhe: ");
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%s", input);
tree=insertRec(tree, input);
}
stampa_albero(tree);
printf("\n");
return 0;
}