class Dll
Clase lista doblemente enlazada @author alu0100880625 @attr_reader [Node] head struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al inicio @attr_reader [Node] tail struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al final
Constants
- Node
Attributes
Public Class Methods
Método que instancia un objeto de la clase (una lista vacia con head y tail inicializados a nil)
# File lib/dieta/dll.rb, line 10 def initialize @head=nil @tail=nil end
Public Instance Methods
Método necesario para el módulo Enumerable
# File lib/dieta/dll.rb, line 65 def each aux=@head while(aux!=nil) yield aux[:data] aux=aux[:next] end end
Método que extrae un dato de la lista por el final @return [Data] dato extraido
# File lib/dieta/dll.rb, line 54 def extract_back aux=@tail[:data] @tail=@tail[:prev] if(@ŧail==nil) @head=nil else @tail[:prev]=nil end aux end
Método que extrae un dato de la lista por el inicio @return [Data] dato extraido
# File lib/dieta/dll.rb, line 42 def extract_front aux=@head[:data] @head=@head[:next] if(@head==nil) @tail=nil else @head[:prev]=nil end aux end
Método que crea un nodo que contenga el dato y lo inserta en la lista por el final @param [Data] data dato que se desea insertar
# File lib/dieta/dll.rb, line 29 def insert_back(data) if(@tail==nil) aux=Node.new(nil,data,nil) @tail=aux @head=aux else aux=Node.new(@tail,data,nil) @tail[:next]=aux @tail=aux end end
Método que crea un nodo que contenga el dato y lo inserta en la lista por el inicio @param [Data] data dato que se desea insertar
# File lib/dieta/dll.rb, line 16 def insert_front(data) if(@head==nil) aux=Node.new(nil,data,nil) @head=aux @tail=aux else aux=Node.new(nil,data,@head) @head[:prev]=aux @head=aux end end