Sha256: f5c9763ba3611c8051739a66056ff19bbc116c9bdf2ad380732bb053c7427e3e
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
module Alimento # Clase que representa a un Nodo de una lista doblemente enlazada Nodo = Struct.new(:valor, :siguiente, :anterior) # Clase que representa a una lista doblemente enlazada # Se ha incluido el mixin Enumerable class Lista include Enumerable # Se asignan la cabeza (@head) y la cola (@tail) y se enlazan def initialize(head, tail) @head = head @tail = tail @head.siguiente = @tail @tail.anterior = @head end # Getter/Setter de @head def head @head end # Getter/Setter de @tail def tail @tail end # Método que inserta un nodo en la cabeza de la lista def insert(nodo) if(nodo.is_a?Nodo) then aux = @head @head = nodo @head.anterior = nil @head.siguiente = aux aux.anterior = @head end end # Método que extrae/elimina el primer valor de la lista def head_out aux = @head.siguiente @head.siguiente = nil @head = aux @head.anterior = nil end # Método que extrae/elimina el último valor de la lista def tail_out aux = @tail.anterior @tail.anterior = nil @tail = aux @tail.siguiente = nil end # Se incluye el método del mixin Enumerable # Se define como una iteración sobre los valores de cada nodod de la lista def each tmp = @head while tmp != nil do yield tmp.valor tmp = tmp.siguiente end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
alimento-alu0100965667-0.1.1 | lib/alimento/lista.rb |
alimento-alu0100965667-0.1.0 | lib/alimento/lista.rb |