Class: Alimentos::Lista
- Inherits:
-
Object
- Object
- Alimentos::Lista
- Includes:
- Comparable, Enumerable
- Defined in:
- lib/alimentos.rb
Overview
Encargada de la representacion de una lista doblemente elazada
Instance Attribute Summary collapse
-
#cabeza ⇒ Object
readonly
Returns the value of attribute cabeza.
-
#cola ⇒ Object
readonly
Returns the value of attribute cola.
-
#lista ⇒ Object
readonly
Returns the value of attribute lista.
-
#tam ⇒ Object
readonly
Returns the value of attribute tam.
Instance Method Summary collapse
-
#extract_head ⇒ Int
Extrae la cabeza de la lista modificado el 2 miembro.
-
#extract_tail ⇒ Int
Extrae la cola de la lista modificado el antepenultimo miembro.
-
#initialize ⇒ Lista
constructor
Crea un lista vacia, con una cabeza nula y una cola nula, ademas de un tamaño 0.
-
#insert(nodo) ⇒ Int
Inserta un nodo por la cola de la lista, cambiando la cola del ultimo nodo y poniendo la del suyo propio a 0.
Constructor Details
#initialize ⇒ Lista
Crea un lista vacia, con una cabeza nula y una cola nula, ademas de un tamaño 0
101 102 103 104 105 106 |
# File 'lib/alimentos.rb', line 101 def initialize @lista = [] @cabeza = nil @cola = nil @tam = 0 end |
Instance Attribute Details
#cabeza ⇒ Object (readonly)
Returns the value of attribute cabeza.
96 97 98 |
# File 'lib/alimentos.rb', line 96 def cabeza @cabeza end |
#cola ⇒ Object (readonly)
Returns the value of attribute cola.
96 97 98 |
# File 'lib/alimentos.rb', line 96 def cola @cola end |
#lista ⇒ Object (readonly)
Returns the value of attribute lista.
96 97 98 |
# File 'lib/alimentos.rb', line 96 def lista @lista end |
#tam ⇒ Object (readonly)
Returns the value of attribute tam.
96 97 98 |
# File 'lib/alimentos.rb', line 96 def tam @tam end |
Instance Method Details
#extract_head ⇒ Int
Extrae la cabeza de la lista modificado el 2 miembro.
134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/alimentos.rb', line 134 def extract_head @tam -= 1 aux = @cabeza @lista.slice!(0) if @tam != 0 @lista[0].prev = nil @cabeza = @lista[0] @cola = @lista[@tam - 1] end aux end |
#extract_tail ⇒ Int
Extrae la cola de la lista modificado el antepenultimo miembro.
151 152 153 154 155 156 157 158 159 160 |
# File 'lib/alimentos.rb', line 151 def extract_tail aux = @cola @lista.slice!(@tam - 1) @tam -= 1 if @tam != 0 @lista[@tam - 1].next = nil @cola = @lista[@tam - 1] end aux end |
#insert(nodo) ⇒ Int
Inserta un nodo por la cola de la lista, cambiando la cola del ultimo nodo y poniendo la del suyo propio a 0
115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/alimentos.rb', line 115 def insert(nodo) node = Struct.new(:value, :next, :prev) if @cabeza == nil @lista[@tam] = node.new(nodo, nil, nil) @cabeza = @lista[0] @cola = @lista[0] else @lista[@tam] = node.new(nodo, nil, @lista[@tam - 1]) @lista[@tam - 1].next = @lista[@tam] @cola = @lista[@tam] end @tam += 1 end |