Class: Dll
Overview
Clase lista doblemente enlazada
Defined Under Namespace
Classes: Node
Instance Attribute Summary collapse
-
#head ⇒ Node
readonly
struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al inicio.
-
#tail ⇒ Node
readonly
struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al final.
Instance Method Summary collapse
-
#each ⇒ Object
Método necesario para el módulo Enumerable.
-
#extract_back ⇒ Data
Método que extrae un dato de la lista por el final.
-
#extract_front ⇒ Data
Método que extrae un dato de la lista por el inicio.
-
#initialize ⇒ Dll
constructor
Método que instancia un objeto de la clase (una lista vacia con head y tail inicializados a nil).
-
#insert_back(data) ⇒ Object
Método que crea un nodo que contenga el dato y lo inserta en la lista por el final.
-
#insert_front(data) ⇒ Object
Método que crea un nodo que contenga el dato y lo inserta en la lista por el inicio.
Constructor Details
#initialize ⇒ Dll
Método que instancia un objeto de la clase (una lista vacia con head y tail inicializados a nil)
10 11 12 13 |
# File 'lib/dieta/dll.rb', line 10 def initialize @head=nil @tail=nil end |
Instance Attribute Details
#head ⇒ Node (readonly)
struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al inicio
5 6 7 |
# File 'lib/dieta/dll.rb', line 5 def head @head end |
#tail ⇒ Node (readonly)
struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al final
5 6 7 |
# File 'lib/dieta/dll.rb', line 5 def tail @tail end |
Instance Method Details
#each ⇒ Object
Método necesario para el módulo Enumerable
65 66 67 68 69 70 71 |
# File 'lib/dieta/dll.rb', line 65 def each aux=@head while(aux!=nil) yield aux[:data] aux=aux[:next] end end |
#extract_back ⇒ Data
Método que extrae un dato de la lista por el final
54 55 56 57 58 59 60 61 62 63 |
# 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 |
#extract_front ⇒ Data
Método que extrae un dato de la lista por el inicio
42 43 44 45 46 47 48 49 50 51 |
# 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 |
#insert_back(data) ⇒ Object
Método que crea un nodo que contenga el dato y lo inserta en la lista por el final
29 30 31 32 33 34 35 36 37 38 39 |
# 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 |
#insert_front(data) ⇒ Object
Método que crea un nodo que contenga el dato y lo inserta en la lista por el inicio
16 17 18 19 20 21 22 23 24 25 26 |
# 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 |