2017-06-20 1 views
-6

Voici mon code de liste lié pour l'insertion du nœud à la fin. Je reçois le code d'erreur déversé. alors s'il vous plaît aidez-moi quel est le problème avec le code.Insérer la liste chaînée à la fin

si je garde le retour; à la fin et à la ligne après * headRef = newnode; ça marche. alors pourquoi revenir pour une fonction de vide.

struct node 
{ 
    int data; // node format 
    struct node* next; 
}; 

void insertAtEnd(struct node** headRef, int newData) 
{ 
    struct node* ptr; 
    struct node* newnode; 
    ptr = (*headRef); 
    newnode = (struct node*)malloc(sizeof(struct node)); 
    newnode->data = newData; 
    newnode->next = NULL; 
    if (*headRef == NULL) 
    { 
     *headRef = newnode; 
    } 
    while (ptr->next != NULL) 
    { 
     ptr = ptr->next; 
    } 
    ptr->next = newnode; 
} 
+2

Comment python lié à cela? –

+2

Choisissez une langue – kuro

+0

Pour diagnostiquer les vidages mémoire, nous avons besoin de voir un programme complet. – zwol

Répondre

0

vous devriez avoir à retourner à l'intérieur si parce que, après instruction if, il est à nouveau en boucle while et ajouter noeud supplémentaire à la fin

struct node 
{ 
    int data; // node format 
    struct node* next; 
}; 

void insertAtEnd(struct node** headRef, int newData) 
{ 
    struct node* ptr; 
    struct node* newnode; 
    ptr = (*headRef); 
    newnode = (struct node*)malloc(sizeof(struct node)); 
    newnode->data = newData; 
    newnode->next = NULL; 
    if (*headRef == NULL) 
    { 
     *headRef = newnode; 
     return; 

    } 
    while (ptr->next != NULL) 
    { 
     ptr = ptr->next; 
    } 
    ptr->next = newnode; 
    return; 
}