J'ai écrit ce code pour insérer un noeud à la fin de la liste liée. Il compile sans erreurs mais lors de l'exécution Aucune sortie de sortie. Où est-ce que j'ai mal tourné? échoue-t-il car il devrait y avoir un cas particulier pour le moment où la liste est vide? P> P>
3 Réponses :
Votre car tête code> n'est jamais réglé sur une valeur définie et il échoue à:
tête code> est
null code> et donc
temp2 code> est également
null code>, qui donne une erreur de segmentation, lorsqu'il tente d'accéder à
suivant code>. P>. p>
Essayez ceci:
#include <iostream> using namespace std; // this was missing !!! struct node { int data; struct node* next; }; struct node *head; void insert_n(int x) { node* temp1 = new node(); temp1->data = x; temp1->next = NULL; node* temp2 = head; while (temp2->next != NULL) { temp2 = temp2->next; } temp2->next = temp1; } void print() { node* temp = head; while (temp != NULL) { cout << temp->data << " "; temp = temp->next; } } int main() { head = new node(); // without this you get a crash !!! insert_n(2); insert_n(3); insert_n(4); insert_n(5); print(); return 0; }
Pourquoi "Utilisation de l'espace de noms std;" considéré comme une mauvaise pratique?
En outre, structure noeud * ... code> est C.
La sortie montre 0 2 3 4 5. Pourquoi a-t-il ajouté le "0"?
Oui, vous avez raison. Si voici un exemple de code:
C Programme pour rechercher et insérer dans un lien individuellement lié. Liste p> p> Head == null code>, votre fonction d'insertion ne peut pas fonctionner.
Voici la correction de votre fonction
insert_n () code>:
Quoi que ce soit
la tête code>, il y a un accès en écriture nul en
insert_n code>. Donc, quelle que soit cette fonction, il ne peut pas changer la chose que
impression code> accès. Sur une note associée,
temp2-> suivant code> est invalide si
temp2 code> est un pointeur NULL, qu'il est initialement. Vous devriez avoir une faute de segmentation là-bas.