Insertion au rang i dans une liste chainé
mister_dsg
-
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
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:
- Insertion au rang i dans une liste chainé
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Touche insertion clavier - Guide
- Liste déroulante en cascade - Guide
- Insertion sommaire word - Guide
8 réponses
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!!!
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!!!
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
merci d'avance
@+
mister_dsg
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!!!
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!!!
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
encore merci
bonne soirée
@+
mister_dsg
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
elle permet bien d'inserer au rang i mais par la meme occasion supprime l'ancienne valeur en i sans decaler toutes les autres
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!!!
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!!!
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 ?
- 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 ?
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
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