Page 1 sur 1
...
Publié : dim. 23/mai/2004 14:24
par Dr. Dri
...
Publié : dim. 23/mai/2004 14:28
par Chris
Add ajoute un élément APRES la position courante
Insert ajoute un element AVANT la position courante
Si tu est en 10, Add ajoute l'élément en 11
Insert ajoute l'élément en 9
C'est ce que je comprends

Chris

Publié : dim. 23/mai/2004 14:32
par Le Soldat Inconnu
Add ajoute un élément à la fin de la linkedlist, non ?
Publié : dim. 23/mai/2004 14:56
par Chris
Le Soldat Inconnu a écrit :Add ajoute un élément à la fin de la linkedlist, non ?
AddElement(ListeChainee())
Description
Ajoute un nouvel élément vide après la position actuelle de la liste ListeChainee(). Ce nouvel élément devient l'élément courant de la liste.
InsertElement(ListeChainee())
Description
Ajoute un nouvel élément avant la position de l'élément courant. Ce nouvel élément devient l'élément courant de la liste spécifiée
Add ajoute un element APRES la position courante, et pas en fin de liste.
Code : Tout sélectionner
; NewList MaListe.s()
;
; For I = 0 To 9
; AddElement(MaListe())
; MaListe() = Str(I) + " --- "+Str(5)
; Next
;
; SelectElement(MaListe(),5)
; AddElement(MaListe())
; MaListe() = " --- " + Str(1000)
;
; ForEach MaListe()
; Debug MaListe()
; Next
NewList MaListe.s()
For I = 0 To 9
InsertElement(MaListe())
MaListe() = Str(I) + " --- "+Str(5)
Next
SelectElement(MaListe(),5)
InsertElement(MaListe())
MaListe() = " --- " + Str(1000)
ForEach MaListe()
Debug MaListe()
Next
Par contre, j'avais pas fait attention, mais la liste est lue en ordre ascendant avec Add, et descendant avec Insert.
Chris

Publié : dim. 23/mai/2004 15:37
par Dr. Dri
...
Publié : dim. 23/mai/2004 15:46
par Chris
C'est vrai que c'est un peu bizarre comme truc.
Moi, j'aurais plutôt vu ça comme ça:
InsertElement() Insère un nouvel élément après, (ou avant, peu importe), l'élément courant.
AddElement() Insère un nouvel élément à la fin de la liste. (Quelle que soit la position actuelle du pointeur).
Parce que là, je ne vois pas vraiment l'intérêt d'avoir deux fonctions pratiquement similaires
Mais ce qui me gène le plus, c'est que la liste soit lue dans un sens pour AddElement(), et dans l'autre sens pour InsertElement(). A mon avis, ce serait bien un bug, cette histoire là.
En tout cas, c'est à prendre en compte pour l'utilisation des LinkedList()
Chris

Publié : dim. 23/mai/2004 17:02
par fweil
...,
On insère toujours avant et on ajoute après le pointeur. Non ?
Enfin si on ajoute qq chose, cela veut dire que l'on ne touche pas ce qu'il y a avant.
Alors que si on insère cela veut bien dire que l'on décale tout.
Maintenant il est possible de faire une insertion après le pointeur, en faisant un NextElement() puis un InsertElement().
Le seul truc qui peut manquer en fait c'est que AddElement() ajoute toujours à la fin, alors qu'on voudrait ajouter en plein milieu ... mais les linked listes n'ont pas vraiment d'indices d'éléments, hormis l'ordre dans lequel on les a mis.
Enfin bon ...
Publié : dim. 23/mai/2004 17:22
par Chris
Non, pas d'accord:
Insérer veut dire mettre une chose parmi d'autres, intercaler, introduire, glisser entre...().
Insérer une feuille dans un cahier, c'est-à-dire mettre la feuille entre les autres feuilles..., parmi les feuilles..., au milieu d'autres feuilles.
On n'insère pas un objet en le mettant simplement par dessus d'autres objets. Il y a une notion de position, même si elle n'est pas évidente et définie
Ajouter, c'est mettre quelque chose en plus, sans véritable notion de position. On peut ajouter un objet à une pile d'objets en le mettant simplement au dessus
Chris

Publié : dim. 23/mai/2004 17:56
par fweil
Chris
Insérer veut dire mettre une chose parmi d'autres, intercaler, introduire, glisser entre...().
Insérer une feuille dans un cahier, c'est-à-dire mettre la feuille entre les autres feuilles..., parmi les feuilles..., au milieu d'autres feuilles.
On n'insère pas un objet en le mettant simplement par dessus d'autres objets. Il y a une notion de position, même si elle n'est pas évidente et définie
le InsertElement ne place pas un élément par dessus les autres, il le met là où on se trouve en déplaçant les éléments après plus loin. Ce qui est exactement le même principe que j'adopte lorsque j'insère une feuille dans un cahier. Sauf que quand j'insère une feuille dans un cahier, je ne la relie pas forcément aux autres en renumérotant toutes les pages et que dans ce cas je place finalement cette feuille par dessus les autres sans crier gare.
Dans PureBasic, l'insertion d'un élémentprend soin que l'élément inséré appartienne bien à la liste, et soit utilisable comme partie de ce tout. Il faut bien lui trouver une place, donc cette place c'est là où l'on est ... ce qui est plutôt logique.
Quant à la notion ajouter, pour être précis, elle peut nécessiter deux attitudes différentes :
- soit on ajoute là où l'on est et dans ce cas on doit déplacer tout ce qui suit, mais cela s'appelle une 'insertion' dans PureBasic
- soit on décide d'ajouter après tout ce qu'il y a, ce qui s'appelle souvent un 'append' dans les langages informatiques, et dans ce cas, l'ajout se fait par création d'une nouvelle place, celle-ci étant tout de suite utilisée pour y mettre ce que l'on ajoute.
C'est tout simple non ?
Publié : dim. 23/mai/2004 18:06
par Chris
fweil a écrit :C'est tout simple non ?
C'est toi qui le dit
Chris

Publié : dim. 23/mai/2004 18:07
par Dr. Dri
...
Publié : dim. 23/mai/2004 18:12
par fweil
Bon finalement c'est comme la démocratie, c'est peut être pas simple, mais quand on sait comment ça marche on s'y retrouve un peu !