Liste chaînées [C] - Programmation
Marsh Posté le 10-04-2001 à 13:32:13
supposons que tu as une structure "element" avec un membre
"suivant".
tu fais un truc dans le genre:
chaine1element3.suivant = chaine1element1
chaine1element2.suivant = chaine2element2
chaine2tete = chaine1element2
c'est clair la?
Marsh Posté le 10-04-2001 à 13:48:05
En fait, c assez simple...
soit tes deux listes l1 et l2.
l1 a quatre elements e1,e2,e3,e4
l2 a trois elements e1,e2,e3
tu veux inserer l2.e2 dans l1 (reste a voir ou !!!). Supposons en tete de liste, pour ke ce soit simple.
tu fait donc:
l2.e2.suivant = l1.e1
l2.e1.suivant = l2.e3
c tout !!
Bon, l'algo c : Supposons ke tu veuilles inserer ton elt a la nieme position. Alors, le champ 'suivant' du nieme elt, tu le fais pointer sur ton nouvel elt, apres avoir fait pointer le champ 'suivant' de ton nouvel elt sur le n+1eme elt (soit le suivant de ton nieme elt). Apres fo ke tu regarde les cas de bord (tete, feuille, etc.)
J'espere ke c assez clair, et bon courage
Marsh Posté le 10-04-2001 à 13:49:52
au pasage utilise une variable temporaire ca devrai aider..
Marsh Posté le 10-04-2001 à 14:11:11
Dans un premire temps, considérons qu'on prenne un élément dans la liste 1 et qu'on veuille rediriger le n° 3 vers la cellule avec le n° 1. J'ai fais ça, et ben ça marche pas !! Il enlève pas ce qu'il faut !
int deplacement (cellule* t1, cellule* t2, int numero_cherche)
{
cellule* tempo; /* nouveau competiteur dans la liste des abandons */
cellule* ancien;
cellule* courant = t1;
while (courant->suivant && (courant->suivant->numero != numero_cherche))
{
ancien = courant;
courant = courant->suivant;
}
if(!(courant->suivant))
{
printf("\nCe numéro n'existe pas !\n" );
return 1;
}
/* si on a trouvé une cellule avec ce numero*/
ancien->suivant = courant->suivant;
return 0;
}
Marsh Posté le 10-04-2001 à 13:20:33
salut, je vous ai préparé un petit dessin pour vous exposer mon probleme :
pour être clair, je veux pouvoir prendre un élément de la liste 1 et le mettre dans la liste 2. Pour ce je rentre le n° de l'élément de la liste à copier dans la liste 2. LE Truc c'est de pas recopier la cellule mais d'organiser une redirection. Mais je bosse dessus et j'arrive vraiment pas. Si vous pouviez m'aider à réaliser l'algo... je serais super reconnaissant.