[C++] ,liste simplement chainnée

Résolu
sifane1 Messages postés 1 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
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;

}
}

1 réponse

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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.
    0