Liste chainés

Signaler
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011
-
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011
-
esp95,
Bonjour j'aimerais que vous m'aidiez je bloque sur le trie de liste chainés j'ai un problème lorsque les deux dernier éléments de ma liste chainé ne permute pas lors du prochain mon dernière élément pointe toujours sur le précédent qu'il ait changé de place ou non
Merci d'avance

void tri()
{
list List2=listdernier(); //pointeur partant de la fin
bool Permut=true;
ListLecture=Debut;
while(Permut)
{
Permut=false;
while(List2 != ListLecture && List2->prec != NULL)
{
if(strcmp(List2->nom,List2->prec->nom)<0)
{
permut(List2,List2->prec);
Permut=true;
}else
{
// List2->prec=List2->prec->prec;
List2=List2->prec;
}
}
if(List2->prec == NULL)
{
Debut=List2;
ListLecture= Debut;
}else
{
ListLecture = ListLecture->suiv;
}

List2=listdernier();
}
}

2 réponses

Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Salut,
Si tu veux de l'aide sur un problème de pointeur, il faut exposer le code qui contient les pointeurs.
permut() est déclarée ou ? idem pour des variables dont on ne sait pas d'où elles sortent.


Cordialement, uaip.
Messages postés
13
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
25 août 2011

Salut merci de ta réponse désolé pour ce bout de code oublié
ma fonction permut
void permut(list list1, list list2)
{
if(list2->prec==NULL)
{
list2->suiv=list1->suiv;
list1->suiv->prec=list2;
list1->suiv=list2;
list1->prec=NULL;
list2->prec=list1;
Debut=list1;
}else if (list1->suiv==NULL)
{
list2->suiv=NULL;
list1->suiv=list2;
list2->prec->suiv=list1;
list1->prec=list2->prec;
list2->prec=list1;
}else
{
list2->suiv=list1->suiv;
list1->suiv=list2;
list2->prec->suiv=list1;
list1->prec=list2->prec;
list2->prec=list1;

}
}
Et mes déclarations

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//déclaration Structure
struct elem
{
char nom[20] ;
char prenom[20];
char tel[10];
struct elem *suiv ; //pointeur sur l’élément suivant
struct elem *prec ; //pointeur sur l’élément précèdent
};
typedef struct elem element; //structelement = element
typedef element *list ; //pointeur sur la structure élément
list Debut; //pointeur sur l’élément
list courant;
list ListLecture;

//déclaration fonction
int menu();
void chargerfichier();
void tri();
void ajouter();
void sauvegarder();
void supprimer();
void afficher();
list listdernier();
void permut(list list1, list list2);