
Envoyé par
arno.
je me demande ce qu'il est préférable d'utiliser entre une liste chainée et une liste "simple" de type array :
Un tableau n'est pas une liste.
Le choix se fait généralement en fonction de l'utilisation:
- liste chaînée:
* permet des insertions/effacements n'importe où
* un élément aloué ne bouge pas, donc on peut pointer dessus et conserver le pointeur qui n'est pas invalidé par les effacements/ajouts
- tableau
* permet un accès en temps constant
On peut faire un tableau qui est modifiable par les deux bouts en jouant sur les indices: s'il faut ajouter avant le début de la zone allouée, on ajoute à la fin de la zone allouée; l'adressage se fait toujours en temps constant mais est un peu plus compliqué.
J'ai pensé à une liste simple, j'alloue 1, puis quand ça dépasse je réalloue (realloc) 2 puis 4, 8, etc.
On ne double généralement pas parce qu'alors la mémoire nécessaire est toujours supérieure à la mémoire libérée. Si ton tableau est la seule structure dynamique du programme, en doublant comme ça tu doubles à peu près la mémoire nécessaire.
Personnellement, j'utilise un facteur 1.5, mais si j'ai bonne mémoire, n'importe quel facteur inférieur au nombre d'or fonctionne.
Partager