[C++] ,liste simplement chainnée [Résolu/Fermé]

Messages postés
1
Date d'inscription
lundi 16 janvier 2012
Statut
Membre
Dernière intervention
16 janvier 2012
-
Bonjour tout le monde,
Je m'appelle amine , je suis sur un mini projet de géstion d'une bibliothéque en langague C++. Le probléme c'est que j'ai tout un travail qui m'attend mais je beug sur un bout de code que je trouve logique , sans erreurs , mais qui beug à chaque fois que j'execute mon programme. Alors j'ai pensé à demander de l'aide auprés des intérnautes :) .
void Biblio::Suprimmer(string titre)
{
Document*k=tete,*p=tete->suivant; // deux pointeur qui ce précédent et qui vont parcourir ma bibliotheque. ( tete est la tete de ma biblio)
if(k==NULL) // bibliotheque vide
cout<<"la bibliotheque est dejas vide"<<endl;
else
{
if(k->Gettitre()==titre) // supression au debut de ma bibliotheque
{
tete=p;
delete k;
}
else// supression d'un element dans ma bibliotheque
{
while(p->suivant!=NULL)//!=null
{
if(p->Gettitre()==titre) // avec des test j'ai constaté que c'est ce qu'il y'a à l'intérieur du if qui fait beuger le programme, pourtant c'est juste non? :/.
{

k->suivant=p->suivant;
delete p;
}
else
{
p=p->suivant;
k=k->suivant;
}
}
if(p->Gettitre()==titre) //supression d'un element à la fin
{
k->suivant=NULL;
delete p;
}
else
cout<<" le document a suprimer ne figure pas dans la bibliotheque"<<endl;

}
}





Afficher la suite 

1 réponse

Messages postés
9713
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
1098
0
Merci
void Biblio::Suprimmer(string titre)
{
Document*k=tete,*p=tete->suivant; // deux pointeur qui ce précédent et qui vont parcourir ma bibliotheque. ( tete est la tete de ma biblio)
if(k==NULL) // bibliotheque vide
cout<<"la bibliotheque est dejas vide"<<endl;
else
{
if(k->Gettitre()==titre) // supression au debut de ma bibliotheque
{
tete=p;
delete k;
}
else// supression d'un element dans ma bibliotheque
{
while(p->suivant!=NULL)//!=null// si tu n' a qu'un element (tete->suivant=0) p est nul et p->suivant retourne une erreur de seg.
{
  if(p->Gettitre()==titre) // avec des test j'ai constaté que c'est ce qu'il y'a à           l'intérieur du if qui fait beuger le programme, pourtant c'est juste non? :/.
   {

     k->suivant=p->suivant;
     delete p;
   }
   else
   {
      p=p->suivant;
      k=k->suivant;
   }
}
if(p->Gettitre()==titre) //supression d'un element à la fin
{
k->suivant=NULL;
delete p;
}
else
cout<<" le document a suprimer ne figure pas dans la bibliotheque"<<endl;

}
}

En fait, je pense while(p!=NULL) devrait suffire.
normalement la fin doit être incluse dedans (pas la peine de faire une traitement particulier.