Suppression d'un noeud dans une liste chaînée avec C++

saidkoukou Messages postés 6 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 octobre 2011 - 25 sept. 2011 à 02:24
cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 - 26 sept. 2011 à 01:32
Bonjour,
je cherche un bout de code C++(ou une méthode) qui me permet de supprimer un noeud dans une liste chaînée.
Merci de me répondre dans le temps le plus proche.

4 réponses

cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
25 sept. 2011 à 11:58
Bonjour.

Je rappelle que l'on ne donne pas de code tout fait, mais que l'on aide volontier à la résolution d'erreur sur des codes présentés.
Donc je t'invite à montrer ton code, et expliquer ce qui te bloque sur celui-ci.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 1
25 sept. 2011 à 20:38
Salut, le principe est que chaque objet possède un pointeur Next et Previous. Si Prévious est NULL, on est au début de la chaine et si c'est Next on est à la fin... Sinon montre ton code comme le dit CptPingu.
0
saidkoukou Messages postés 6 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 10 octobre 2011
25 sept. 2011 à 22:18
Bonjour,
voici un bout de mon code C++:
entier *chercherpred(entier *e,listentiers *list)
{
for(entier *pred=list->first;pred!=NULL;pred=pred->next)
{
if(pred->next==e)
return pred;
}
return NULL;
}

void supprimernode(listentiers *list,int y)/*supprimer le noeud dont l'identifiant est y de la liste list*/


{
for(entier *e=list->first;e!=NULL;e=e->next);
{
if((e->x)==y)
{
if(e==list->first)
{
list->first=e->next;
delete e;
}
else
{
entier *pred=chercherpred(e,list);/*Chercher le predecesseur de e*/
pred->next=e->next;
delete e;
}
}
}

}
0
cs_LA_Tupac Messages postés 305 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 18 janvier 2012 1
26 sept. 2011 à 01:32
Ça m'a l'air tout bon ... mais fait attention !! cette fonction ne supprime que le premier *entier dont la valeur de x est y....
Si il y'a plusieurs valeurs identiques seul la première est supprimée.
0