mise en œuvre d'un TRIE de la structure de données

Hii ,
j'ai Été mise en œuvre d'un trie dans le C ... mais j'obtiens une erreur dans le insert_trie fonction .

Je ne pouvais pas comprendre pourquoi le nœud racine n'est pas mis à jour . Merci de m'aider avec cela.

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct
{
char value;
int level;
struct node *next;
struct node *list;
}node;
node *trie = NULL;
node *init_trie()
{
node *new = (node *)malloc(sizeof(node));
if(trie == NULL)
{
new->value = '$';
new->next = NULL;
new->list = NULL;
new->level = 0;
trie = new;
printf("\n Finished initializing the trie with the value %c",trie->value);
return trie;
}
printf("\n Trie is already initialized");
return trie;
}  
node *insert_trie(char *s)
{
node *nodepointer = trie;
node *new = (node *)malloc(sizeof(node));
node *save = NULL;
int i=0;
while(s[i]!=NULL)
{
nodepointer = nodepointer->list;
while(nodepointer!=NULL)
{
if(s[i] == nodepointer->value)
{
printf("\n Found %c",nodepointer->value);
nodepointer = nodepointer->list;
i++;
}
save = nodepointer;
nodepointer = nodepointer->next;
}
new->value = s[i];
new->next = NULL;
new->list = NULL;
printf("\n Inserting %c",new->value);
save->next = new;     
i++;
}
return trie;
} 
int main()
{
int num;
char *s = (char *)malloc(sizeof(char)*10);
trie = init_trie();
printf("\n Enter the number of words to enter into the trie "); 
scanf("%d",&num);
while(num>0)
{
scanf("%s",s);
//printf("%s",s);
trie = insert_trie(s);
printf("\n Finished inserting the word %s into the trie \n",s);
num --;
} 
return 0;
} 

J'obtiens une erreur de segmentation en raison de la ligne de nodepointer = nodepointer->liste en insert_trie fonction ... Pourquoi ????

P. S : Ce n'est pas de devoirs.Mais je suis en train de le mettre en œuvre. Je n'ai pas pu trouver l'erreur .

Quelle erreur avez-vous? Quelle ligne est-il se produire?
Consultez maintenant... j'ai édité la question

OriginalL'auteur Flash | 2010-10-25