die Umsetzung einer TRIE-Datenstruktur

Hii ,
ich War die Implementierung eines trie in C ... aber ich bin immer ein Fehler in der insert_trie Funktion .

Ich konnte nicht herausfinden, warum der root-Knoten ist nicht immer aktualisiert . Bitte helfen Sie mir mit diesem.

#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;
  } 

Bekomme ich ein "segmentation fault", wegen der Zeile nodepointer = nodepointer->Liste in insert_trie Funktion ... Warum ????

P. S : Dies ist keine Hausaufgaben.Aber ich versuche es zu implementieren. Ich konnte Sie einfach nicht finden den Fehler .

  • Welche Fehler sind Sie immer? Welche Linie tritt es auf?
  • Finden Sie jetzt... ich bearbeitet habe, die Frage
InformationsquelleAutor Flash | 2010-10-25
Schreibe einen Kommentar