[C++] ,liste simplement chainnée
Résolu
sifane1
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 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;
}
}
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;
}
}
A voir également:
- [C++] ,liste simplement chainnée
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
- Liste site streaming illégal - Accueil - Services en ligne
1 réponse
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.