Suppression cellule d'une liste doublement chainée

donlefou Messages postés 44 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 28 juin 2007 - 8 mars 2006 à 11:11
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 8 mars 2006 à 13:58
Quelqu'un pourrait m'écrire le code pour supprimer une cellule à une position dans une liste.
J'ai un fichier C_Cellule.hpp / C_Cellule.cpp de cette structure en gros :

template <class T>
class C_Cellule{
public:
C_Cellule<T> *prec, *suiv;
private:
T element; // Valeur de l'élément
....avec toutes les opérations (constructeur, destructeur, acces...)...

Et mon fichier C_Liste.hpp / C_Liste.cpp :

template <class T>
class C_Liste{
private:
C_Cellule<T> *liste;
int nbelt;
....avec toutes les opérations (constructeur, destructeur, acces...)...

1 réponse

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
8 mars 2006 à 13:58
le cas est different si tu veu supprimer la premiere cellule, ou une autre cellule.
soient:

C_Liste<T> *lst;
C_Cellule<T> *tmp;

pour la premiere:
tmp = lst->liste;
lst->liste = tmp->suiv;if (lst->liste !NULL) lst->liste->prec tmp->prec;
delete(tmp);

pour les autres:
tmp = lst->elementAt(index_a_suppr);if (tmp->prec !NULL) tmp->prec->suiv tmp->suiv;if(tmp->suiv !NULL) tmp->suiv->prec tmp->prec;
delete(tmp);
0
Rejoignez-nous