Lua: Le tutoriel  wxWidgets
Lua
Les tables: Les listes chaînées.

Bien que ce ne soit pas le but de ce tuto, un petit rappel sur les listes chaînées me semble indispensable.
Ce sujet sera abordé succinctement, mais si vous souhaitez l'approfondir n'hésitez pas à vous rendre sur le web où vous pourrez trouver moult & moult sites, traitant plus en profondeur ce sujet.

Qu'est-ce qu'une liste chaînée?

C'est une structure informatique qui permet la sauvegarde dynamique de données en mémoire tout comme des variables ou tableaux mais sans se préoccuper de leur nombre et en rendant leur allocation plus transparente.
On dit liste chaînée car les données sont chaînées les unes avec les autres.
On accède aux données à l'aide d'un ou deux points d'entrées qui se situent la plupart du temps aux extrémités de la liste.
Représentation shématique d'un élément:
Données
Pt vers élément suivant
liste1

Différents types de listes.

Il existe plusieurs types de listes chaînées dépendant de la manière dont on se déplace dans la liste.
  1. Les listes chaînées simples
  2. Les listes doublement chaînées
  3. Les listes circulaires

La liste chaînée simple.

C’est la liste de base, dont chaque élément appelé noeud, contient deux parties:
  1. Une partie contenant l’information proprement dite
  2. Et une partie appelée pointeur qui lie le noeud précédent au noeud suivant

Et avec Lua?

Vous aurez rarement besoin de ces structures, car il existe, avec LUA, un moyen plus simple pour représenter vos données sans l'aide de listes.
Il suffit de représenter une pile à l'aide d'une table illimitée, avec nchamps pointant vers le haut.
Or qui dit table Lua, dit table dynamique, donc taille illimitée...

En effet, les tables Lua étant des entités dynamiques, il est facile d'implémenter des listes chaînées avec ce type de langage.
Chaque noeud serait représenté par une table ou les liens seraient tout simplement les champs des tables qui contiendraient des références (pointeurs) à d'autres tables.
Par exemple, pour réaliser une liste basique, où chaque noeud serait composé de 2 champs, next et value.

Création de nouvelles listes.

local list = nil	-- initialisation de la variable 
for line in io.lines do
  list = {next = list, value = v}	
end     
				

Ce code lit les lignes de l'entrée standard et les stocke dans une liste liée, dans l'ordre inverse.
Chaque noeud de la liste est une table avec deux champs:
le contenu en ligne value, et next, une référence au noeud suivant.

Le code suivant affiche le contenu de la liste.

-- Affichage du contenu de la liste:
local l = list
while l do
  print(l.value)
  l = l.next
end
				

Puisque la liste a été implémentée comme une pile, les lignes s'afficheront dans un ordre inverse.

La réalisation d'autres types de listes, comme les listes doublement chaînées ou les listes circulaires, sont également possible.

logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 4 décembre 2012.
Valid XHTML 1.0 Transitional

wxlualogo
Flèche haut
Flèche gauche
Flèche haut
Flèche droite