Insertion au rang i dans une liste chainé

mister_dsg -  
 mister_dsg -
voila je cherche a inserer un element dans une liste chainé
sachant qu'au depart on demande la valeur de l'élément et aussi le rang auquel l'inserer. seulement ça fait un petit bout de temps que je travaille dessus mais sans aucun resultat, et j'aimerai savoir si quelqu'un pouvait eventuellement m'aider
merci d'avance
@+
mister_dgs
A voir également:

8 réponses

tafiscobar Messages postés 1281 Statut Contributeur 177
 
salut, voici un pseudo code (je suppose en C)
int insert (list *l, cell *c, int r) {
list *tmp = l;
int j = 0;
//la tu parcours ta liste pour te placer au bon moment
//maintenant tu t'arretes lorsque t'arrives a la fin de la liste
//(tmp == NULL) ou j == r (t'a parcouru r -1 elts de la liste)
while (tmp != NULL && j < r) {
[tab] tmp = tmp->suiv;
[tab]j++;
}
c->suiv = tmp->suiv;
tmp->suiv = c;
}
voila.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
mister_dsg
 
merci pour la reponse mais si je pouvais eventuellement avoir ce que tu as mis en algo ou en pascal, ça m'arrengerai un tout petit peu, mais sinon j'essaierai de traduire ça tout seul
merci d'avance
@+
mister_dsg
0
tafiscobar Messages postés 1281 Statut Contributeur 177
 
d'aileurs je m'etais un p trompe sur le decompte des elts de la liste, voici en algo :
procedure insert (list l, cell c, int r)
debut
int i = 1;
tmp = l;
tant q tmp != pointer null et i < r Faire
[tab] tmp = suivant (tmp) ds la liste
[tab] i = i + 1;
Fin tq
//la on est arrive
suivant(tmp) = c;
suivant(c) = suivant(tmp);
fin.

j'espere t'avoir aide, je ne peux pas faire plus, car l'objet list peut etre n'importe quoi, un tableau, tout ce q tu veux. Les commentaires se trouvent ds le 1er code.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
mister_dsg
 
merci bien je pense que je pourrai m'en sortir avec les renseignenement que tu viens de me donner
encore merci
bonne soirée
@+
mister_dsg
0

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

Posez votre question
mister_dsg
 
ta procédure a un léger defaut
elle permet bien d'inserer au rang i mais par la meme occasion supprime l'ancienne valeur en i sans decaler toutes les autres
0
tafiscobar Messages postés 1281 Statut Contributeur 177
 
tu n'as pas inverse l'ordre des suivants par hasard? sinon fais voir ton code. Eh oui, je me suis trompe , le code C il est bon, mais l'algo j'ai inverse, faut d'abord faire :
suivant(c) = suivant(tmp);
suivant(tmp)= c;
Ton code n'est plus necessaire.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
moor
 
Pour inserser un element dans une liste , il ya 3 cas à voir :
- inserer au debut de la liste : plus simple
- inserer à la fin de la liste : simple :
- et inserer au milieu d'une liste : demande de la reflexion mais pas difficile :
La solution depend du type de la liste : est elle lineaire à sens unique , bidrectionnelle? ou circulaire ?
0
mister_dsg
 
elle est linéaire, je pense en fait que pour l'insertion de rang i, il faut en fait inserer un maillon vide en fin de chaine, ensuite faire un decalage et enfin inserer l'élément
je pense avoir une petite idée de comment l'ecrire et je vais bien voir si ça marche
@+
mais toute suggestion est quand meme la bienvenue
mister dsg
0