Class: List
Defined Under Namespace
Classes: Node
Instance Attribute Summary collapse
-
#head ⇒ Object
readonly
Los atributos son de lecutra.
-
#size ⇒ Object
readonly
Los atributos son de lecutra.
-
#tail ⇒ Object
readonly
Los atributos son de lecutra.
Instance Method Summary collapse
-
#[](index) ⇒ <Tempalte>
Permite acceder a un elemento de la lista en concreto.
-
#each ⇒ Object
Ejecuta un bloque de código para cada elemento de la Lista.
-
#emisiones ⇒ Double
Emisiones emitidas por el total de alimentos de la lista, en caso de que la lista sea de #Comida.
-
#emisionest ⇒ Double
Emisiones anuales emitidas por el total de alimentos de la lista, en caso de que la lista sea de #Comida.
-
#initialize ⇒ List
constructor
Constructor.
-
#pop_head ⇒ <Template>
Extrae un nodo en la lista por la cabeza.
-
#pop_tail ⇒ <Template>
Extrae un nodo en la lista por la cola.
-
#push_head(valor) ⇒ Object
Introduce un elemento (nodo o valor) en la lista por la cabeza.
-
#push_tail(valor) ⇒ Object
Introduce un elemento (nodo o valor) en la lista por la cola.
-
#terreno ⇒ Double
Coste de terreno en m2 del total de alimentos de la lista, en caso de que la lista sea de #Comida.
Constructor Details
#initialize ⇒ List
Constructor. Genera una Lista vacia, sin nodos, con head y tail nil.
20 21 22 23 24 |
# File 'lib/practica6/lista.rb', line 20 def initialize @tail= nil @head= nil @size= 0 end |
Instance Attribute Details
#head ⇒ Object (readonly)
Los atributos son de lecutra
15 16 17 |
# File 'lib/practica6/lista.rb', line 15 def head @head end |
#size ⇒ Object (readonly)
Los atributos son de lecutra
15 16 17 |
# File 'lib/practica6/lista.rb', line 15 def size @size end |
#tail ⇒ Object (readonly)
Los atributos son de lecutra
15 16 17 |
# File 'lib/practica6/lista.rb', line 15 def tail @tail end |
Instance Method Details
#[](index) ⇒ <Tempalte>
Permite acceder a un elemento de la lista en concreto.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/practica6/lista.rb', line 157 def [] (index) if index.is_a?Integer if index== 0 return @head.value elsif index== (@size- 1) return @tail.value elsif index< (@size- 1) && index> 0 iterator= @head index.times{iterator= iterator.next} return iterator.value else return nil end end end |
#each ⇒ Object
Ejecuta un bloque de código para cada elemento de la Lista.
142 143 144 145 146 147 148 |
# File 'lib/practica6/lista.rb', line 142 def each iterator= @head while iterator!= nil do yield iterator.value iterator= iterator.next end end |
#emisiones ⇒ Double
Emisiones emitidas por el total de alimentos de la lista, en caso de que la lista sea de #Comida
103 104 105 106 107 108 109 110 111 112 |
# File 'lib/practica6/lista.rb', line 103 def emisiones iterator= head emision= 0.0.to_d while iterator!= nil do emision= emision+ iterator.value.GEI.to_d iterator= iterator.next end return emision end |
#emisionest ⇒ Double
Emisiones anuales emitidas por el total de alimentos de la lista, en caso de que la lista sea de #Comida
119 120 121 |
# File 'lib/practica6/lista.rb', line 119 def emisionest return (emisiones* 365) end |
#pop_head ⇒ <Template>
Extrae un nodo en la lista por la cabeza.
52 53 54 55 56 57 58 59 60 |
# File 'lib/practica6/lista.rb', line 52 def pop_head @head= @head.next unless @head== nil @head.prev= nil unless @head== nil @tail= nil if @head== nil if @size> 0 @size= @size- 1 end return nil end |
#pop_tail ⇒ <Template>
Extrae un nodo en la lista por la cola.
88 89 90 91 92 93 94 95 96 |
# File 'lib/practica6/lista.rb', line 88 def pop_tail @tail= @tail.prev unless @tail== nil @tail.next= nil unless @tail== nil @head= nil if @tail== nil if @size> 0 @size= @size- 1 end return nil end |
#push_head(valor) ⇒ Object
Introduce un elemento (nodo o valor) en la lista por la cabeza. Si el valor es un nodo, se incluye directamente. Si no lo es, primero se transforma en nodo y se incluye en la lista.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/practica6/lista.rb', line 32 def push_head(valor) if valor.class== Node addedNode= valor else addedNode= Node.new(valor) end addedNode.prev= nil addedNode.next= @head @head.prev= addedNode unless @head.nil? @head= addedNode @tail= addedNode if @tail.nil? @size= @size+ 1 return nil end |
#push_tail(valor) ⇒ Object
Introduce un elemento (nodo o valor) en la lista por la cola. Si el valor es un nodo, se incluye directamente. Si no lo es, primero se transforma en nodo y se incluye en la lista.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/practica6/lista.rb', line 68 def push_tail(valor) if valor.class== Node addedNode= valor else addedNode= Node.new(valor) end addedNode.next= nil addedNode.prev= @tail @tail.next= addedNode unless @tail.nil? @tail= addedNode @head= addedNode if @head.nil? @size= @size+ 1 return nil end |
#terreno ⇒ Double
Coste de terreno en m2 del total de alimentos de la lista, en caso de que la lista sea de #Comida
128 129 130 131 132 133 134 135 136 137 |
# File 'lib/practica6/lista.rb', line 128 def terreno iterator= head coste= 0.0.to_d while iterator!= nil do coste= coste+ iterator.value.GEI.to_d iterator= iterator.next end return coste end |