Sha256: 7ddce2b23e6aa69a430f3fe1f751ac4d0fc321aae86b77dda059b41c14680d02
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
module Alimento # Esta clase representa el nodo de una lista. Nodo = Struct.new(:valor, :siguiente, :anterior) # Esta clase es la definición de una lista doblemente enlazada. class Lista include Enumerable attr_reader :head, :tail # Inicia la lista (vacía). def initialize @head = nil @tail = nil end # Permite insertar un valor en la lista por delante. def insertar_head(valor) nodo = Nodo.new(valor,nil,nil) if (@head == nil) @head = nodo @tail = nodo else @head.anterior = nodo nodo.siguiente = @head @head = nodo end end # Permite insertar un valor en la lista por detrás. def insertar_tail(valor) nodo = Nodo.new(valor,nil,nil) if (@tail == nil) @tail = nodo @head = nodo else @tail.siguiente = nodo nodo.anterior = @tail @tail = nodo end end # Elimina el primer elemento de la lista. def extraer_head @head = @head.siguiente end # Elimina el último elemento de la lista. def extraer_tail @tail = @tail.anterior end # Se incluye el metodo del mixin Enumerable. # Iteración sobre los elementos de la lista desde el principio hasta el final. def each iterador = @head while iterador != nil yield iterador.valor iterador = iterador.siguiente end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
alimento-0100905144-0.1.1 | lib/alimento/lista.rb |