Liste chainée avec un noeud fictf au début

Fermé
juliette - 21 mai 2008 à 17:08
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 - 21 mai 2008 à 18:00
Bonjour,

Ecrire une fonction qui inserer_avant qui insère dans une liste simplement chainée "Ls" avec un noeud fictif au début , un entier avant un noeudd'adresse "pn"

Ecrire une autre fonction qui supprime dans une liste (simplement chainée avec un noeud fictif au début) , la première occurence d'un élément connaissant l'adresse pn de son noeud.


n'hésitez pas de poster vos propositions ;)

5 réponses

lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
21 mai 2008 à 17:11
salut
tu veux dire quoi avec un noeud fictif ?
0
salut lina :)

noeud fictif au début de la liste c à d que le 1er noeud de la liste contient n'importe quoi ,il n'y a pas une condition sur la 1ere cellule .

par expl si on a une liste constituée de 3 cellules dont le 1er noeud est fictif , ds ce cas la liste contient 2 éléments mais constituée de 3 cellules tt de mm.
0
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
21 mai 2008 à 17:32
d'accord je vois maintenant
si j'ai bien compris , tu veux une fonction qui insère un elément (entier ) dans une liste simplement chainée constitué soit disant de maillons et on trouve deux champs ds chaque maillon ; disons un champ ou on stocke un entier et le deuxième pointe sur le maillon suivant
0
effectivement , sauf que je vx 2 fonctions une qui insère et l'autre pr supprimer ,e n tenant compte du fait que la 1ère cellule est fictive .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
21 mai 2008 à 18:00
supposons que c'est une liste triée par ordre croissant
la structure sera
Tliste L1
int elt;
TListe next ;
TListe;


Tliste insérer (Tliste L1, int x){
L2 = L1->next ; // comme ca on garde l adresse du noeud fictif avec L1
while (x>L2->elt){
L2=L2->next;
}
if (L2->next != NULL) { // on est pas à la fin de la liste
temp =L2->next;
créer un maillon qu'on nommera d (avec un malloc ) et aprés on fait le chainage
l2->next=d;
d2->next= temp;
}
else{ // fin de liste ,le x est le plus grand ds la liste
créer d2 ( encore avec la malloc sizeof ....)
L2->next = d;
d->next=NULL;
}
return (L2) // si tu veux retourner juste ta liste sans tenir compte du noeud fictif, ou sinon tu peux faire return(L1)
puisqu'on a gardé l'adresse

}


j'ai essayé de te donner un peu les grandes lignes , ça n'empêche que ça peut contenir des fautes .
dis moi ce que t'en penses et je regarderai pr le reste ou bien je rectifierai si nécessaire
bon courage
0