Les listes liées sont une structure de données fondamentale en informatique, souvent utilisées pour organiser et gérer des collections d'objets. Dans cet article, nous allons explorer les listes liées en Ruby, en expliquant leur fonctionnement, leurs avantages et inconvénients, ainsi que des exemples de code pour vous aider à les comprendre. Que vous soyez un débutant ou un développeur expérimenté, cet article vous fournira une base solide sur les listes liées.
Une liste liée est une collection d'éléments, appelés nœuds, où chaque nœud contient une valeur et une référence au nœud suivant dans la séquence. Contrairement aux tableaux, les listes liées ne nécessitent pas de taille fixe, ce qui les rend flexibles pour l'ajout et la suppression d'éléments.
Chaque nœud d'une liste liée est généralement composé de deux parties :
Voici un exemple simple d'une classe de nœud en Ruby :
class Node
attr_accessor :value, :next_node
def initialize(value)
@value = value
@next_node = nil
end
end
Il existe plusieurs types de listes liées, chacune ayant ses propres caractéristiques :
La liste liée simple est la forme la plus basique. Voici comment vous pouvez implémenter une liste liée simple en Ruby :
class LinkedList
attr_accessor :head
def initialize
@head = nil
end
def append(value)
new_node = Node.new(value)
if @head.nil?
@head = new_node
else
current = @head
current = current.next_node while current.next_node
current.next_node = new_node
end
end
def display
current = @head
while current
print "#{current.value} -> "
current = current.next_node
end
puts "nil"
end
end
Les listes liées présentent plusieurs avantages par rapport aux tableaux :
Malgré leurs avantages, les listes liées ont aussi des inconvénients :
Voyons maintenant comment implémenter une liste liée double en Ruby. Dans une liste liée double, chaque nœud a une référence au nœud précédent ainsi qu'au nœud suivant.
class DoubleNode
attr_accessor :value, :next_node, :prev_node
def initialize(value)
@value = value
@next_node = nil
@prev_node = nil
end
end
class DoublyLinkedList
attr_accessor :head, :tail
def initialize
@head = nil
@tail = nil
end
def append(value)
new_node = DoubleNode.new(value)
if @head.nil?
@head = new_node
@tail = new_node
else
@tail.next_node = new_node
new_node.prev_node = @tail
@tail = new_node
end
end
def display
current = @head
while current
print "#{current.value} <-> "
current = current.next_node
end
puts "nil"
end
end
Les listes liées sont utilisées dans de nombreux algorithmes et structures de données, notamment :
Les listes liées sont une structure de données puissante et flexible qui peut être utilisée dans de nombreuses applications. Bien qu'elles aient leurs avantages et inconvénients, leur capacité à gérer des collections d'objets de manière dynamique en fait un choix populaire parmi les développeurs. En comprenant comment fonctionnent les listes liées en Ruby, vous serez mieux équipé pour les utiliser efficacement dans vos projets.
Nous espérons que cet article vous a aidé à mieux comprendre les listes liées. N'hésitez pas à expérimenter avec le code fourni et à explorer davantage cette structure de données fascinante !
© 2024 RailsInsights. All rights reserved.