J'essaie de créer une pile en utilisant une structure de liste liée sous-jacente.Problème d'implémentation des listes liées
Peut-être que je me trompe, mais j'ai des problèmes avec la fonction remove().
int Stack::remove(){
node* victim = new node;
int popped;
popped = top->element;
victim = top;
top = victim->next;
delete victim;
return popped;
}
Je reçois glibc dectecting
à double libre ou la corruption (out);
Puisque j'alloue une nouvelle mémoire à la victime, ne dois-je pas supprimer la victime, ou est-ce quelque chose dont je n'ai pas à me soucier?
Aucun point dans l'allocation de mémoire ou l'utilisation de nouveau pour le noeud victime. Rappelez-vous qu'un pointeur est simplement une référence, il suffit donc de pointer vers la tête de la liste. Enregistrez la valeur de données, déplacez la tête de la liste vers l'élément suivant (peut vouloir vérifier NULL), puis supprimez le pointeur de temp que vous aviez à l'origine pointant vers la tête. Cela signifie que vous l'avez fait éclater. – JonH