1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| bool Retirer(unsigned int _uiPosition){ //permet de retirer dans la liste
if (_uiPosition >= 1 && _uiPosition <= m_uiCount){ //si la position envoyer en paramètre respecte un nombre dans la liste
if (m_pPremier->ObtenirSuivant() != nullptr){
if (_uiPosition == 1){ //si on veux retirer le première élément de ma liste
m_pPremier = m_pPremier->ObtenirSuivant(); //changer la position de de mon première élément au suivant
}
else{ //si on a besoin de parcourir ma liste pour trouver l'élément
CCelluleListe<modele>* tempAvantSupprimer = m_pPremier; //créer un temporaire
for (int iCompteur = 1; iCompteur < _uiPosition - 1; iCompteur++){ //trouver l'emplacement précédent de celui que l'on veut suprimer
tempAvantSupprimer = tempAvantSupprimer->ObtenirSuivant(); //changer le pointeur temporaire tant que la position n'est pas la bonne recherché
}
if (_uiPosition == m_uiCount){ //si mon élément est le dernier
tempAvantSupprimer->DefinirSuivant(nullptr);
}
else{
CCelluleListe<modele>* TempSupprimer = tempAvantSupprimer->ObtenirSuivant(); //créer un nouveau pointeur qui pointe à celui que l'on veut supprimer
tempAvantSupprimer->DefinirSuivant(tempAvantSupprimer->ObtenirSuivant()); //Définir le suivant de l'élément qui précede celui à supprimer au suivant de celui à supprimer
delete TempSupprimer; //supprimer mon pointeur temporaire à supprimer
}
}
}
else{
delete m_pDernier;
m_pDernier = nullptr;
}
m_uiCount--; //décrémenter mon nombre d'élément dans ma liste en réponse à un retirement
}
else{
return false; //si ma liste était vide, alors on ne peut rien retirer
}
} |
Partager