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 eninsert_n code>. Donc, quelle que soit cette fonction, il ne peut pas changer la chose queimpression code> accès. Sur une note associée,temp2-> suivant code> est invalide sitemp2 code> est un pointeur NULL, qu'il est initialement. Vous devriez avoir une faute de segmentation là-bas.