[C] Liste chaînées

Liste chaînées [C] - Programmation

Marsh Posté le 10-04-2001 à 13:20:33    

salut, je vous ai préparé un petit dessin pour vous exposer mon probleme :
http://www.z0rglubspirou.freesurf.fr/listechainée.jpg
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.

Reply

Marsh Posté le 10-04-2001 à 13:20:33   

Reply

Marsh Posté le 10-04-2001 à 13:22:29    

http://www.z0rglubspirou.freesurf.fr/listechainee.jpg

Reply

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?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

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. :D
 
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 :D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 10-04-2001 à 13:49:52    

au pasage utilise une variable temporaire ca devrai aider..


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

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;  
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed