2017-09-20 6 views
0
node* nodeArray[1000]; 
for (int j = 0; j < 1000; j++){ 
nodeArray[j] = new node; 
} 
int nodeCounter = 0; 
string temporary = ""; 
string cont; //file content 
int i = 0; 
while (getline(fileObject, cont)){ 
    for (int k = 0; k < cont.length(); k++) 
    cont[k] = tolower(cont[k]); 
    while (i < cont.length()){ 

C'est ici qu'intervient le problème. La ligne cout me dit que ma logique est bonne car elle devrait insérer des nœuds dans mon tableau de listes chaînées. Mais il ne les ajoute pas réellement au tableau de liste liée.Les informations ne sont pas réellement stockées dans le tableau des noeuds

//cout << "nodeArray [" << nodeCounter << "] : " << temporary << "\n"; 
    insert(nodeArray[nodeCounter], temporary); 
    temporary = ""; 
    i++; 
} 
i = 0; 
nodeCounter++; 

} 

Et voici ma fonction d'insertion qui pourrait être déconner avec le programme

void insertion(node* tail, string info){ 
     node* temp = new node; 
     temp->data = info; 
     temp->previous = tail; 
     temp->next = NULL; 
     tail = temp; 
    } 
+0

Les deux premiers extraits de code proviennent-ils de la fonction principale? S'il vous plaît partager le code plus clair. –

+0

Oui c'est de la fonction principale. Cependant, la fonction d'insertion est séparée. Il complète une structure de noeud de liste chaînée standard. –

+1

Vous modifiez la queue locale de la variable. –

Répondre

2

Vous passez un pointeur en valeur, au lieu de référence, de sorte que l'adresse du passé dans la variable pointe vers est inchangé.

changement void insertion(node* tail, string info){ dans void insertion(node*& tail, string info){.

+0

Cela a résolu le problème de leur ajout au tableau. Maintenant j'ai le problème qu'au lieu d'ajouter des noeuds à chaque liste liée individuelle dans le tableau, il l'écrase. –

+0

@ ZacharyCollins queue n'est pas la queue, mais la tête. –