Class: List
Instance Attribute Summary collapse
-
#head ⇒ Object
readonly
Returns the value of attribute head.
-
#size ⇒ Object
readonly
Returns the value of attribute size.
-
#tail ⇒ Object
readonly
Returns the value of attribute tail.
Instance Method Summary collapse
-
#[](position) ⇒ Struct
Retorna un struct que en el que está encapsulado el nodo.
- #clasificar_etiquetas ⇒ Struct
- #clasificar_imc ⇒ Struct
-
#each ⇒ List
Método each implementado para el correcto funcionamiento del módulo Enumerable.
-
#initialize ⇒ List
constructor
Retorna una nueva instancia de Lista.
-
#pop_back ⇒ Number
Retorna el tamaño de la lista tras decrementarse esta.
-
#pop_front ⇒ Number
Retorna el tamaño de la lista tras decrementarse esta.
-
#push_back(etiqueta) ⇒ Number
Retorna el tamaño de la lista tras expandirse esta.
-
#push_front(etiqueta) ⇒ Number
Retorna el tamaño de la lista tras expandirse esta.
- #swap(a, b) ⇒ Struct
-
#to_s ⇒ String
Retorna una cadena con la información de todos los nodos de la lista.
Constructor Details
#initialize ⇒ List
Returns retorna una nueva instancia de Lista.
6 7 8 9 10 |
# File 'lib/practica6/list.rb', line 6 def initialize() @head = nil @tail = nil @size = 0 end |
Instance Attribute Details
#head ⇒ Object (readonly)
Returns the value of attribute head.
3 4 5 |
# File 'lib/practica6/list.rb', line 3 def head @head end |
#size ⇒ Object (readonly)
Returns the value of attribute size.
3 4 5 |
# File 'lib/practica6/list.rb', line 3 def size @size end |
#tail ⇒ Object (readonly)
Returns the value of attribute tail.
3 4 5 |
# File 'lib/practica6/list.rb', line 3 def tail @tail end |
Instance Method Details
#[](position) ⇒ Struct
Returns retorna un struct que en el que está encapsulado el nodo.
83 84 85 86 87 88 89 |
# File 'lib/practica6/list.rb', line 83 def [](position) aux = @head position.times do aux = aux.next end aux end |
#clasificar_etiquetas ⇒ Struct
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/practica6/list.rb', line 129 def clasificar_etiquetas ordenado = false aux_ = @head while ordenado != true do ordenado = true i = 0 aux = @head (@size - 1).times do if aux.value.sal > aux.next.value.sal self.swap(aux, aux.next) ordenado = false aux = aux.prev end aux = aux.next end end end |
#clasificar_imc ⇒ Struct
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/practica6/list.rb', line 149 def clasificar_imc ordenado = false aux_ = @head while ordenado != true do ordenado = true i = 0 aux = @head (@size - 1).times do if aux.value.registro.imc > aux.next.value.registro.imc self.swap(aux, aux.next) ordenado = false aux = aux.prev end aux = aux.next end end end |
#each ⇒ List
Returns método each implementado para el correcto funcionamiento del módulo Enumerable.
13 14 15 16 17 18 19 |
# File 'lib/practica6/list.rb', line 13 def each() head_aux = @head while head_aux != nil do yield head_aux.value head_aux = head_aux.next end end |
#pop_back ⇒ Number
Returns Retorna el tamaño de la lista tras decrementarse esta.
72 73 74 75 76 77 78 79 |
# File 'lib/practica6/list.rb', line 72 def pop_back() aux = @tail @tail = @tail.prev @tail.next = nil aux.next = nil aux.prev = nil @size -= 1 end |
#pop_front ⇒ Number
Returns Retorna el tamaño de la lista tras decrementarse esta.
62 63 64 65 66 67 68 69 |
# File 'lib/practica6/list.rb', line 62 def pop_front() aux = @head @head = @head.next @head.prev = nil aux.prev = nil aux.next = nil @size -= 1 end |
#push_back(etiqueta) ⇒ Number
Returns Retorna el tamaño de la lista tras expandirse esta.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/practica6/list.rb', line 23 def push_back(etiqueta) node = Struct.new(:prev, :next, :value).new(nil,nil,etiqueta) if @size == 0 @tail = node @head = node else aux = @tail @tail = node @tail.prev = aux aux.next = tail end @size += 1 end |
#push_front(etiqueta) ⇒ Number
Returns Retorna el tamaño de la lista tras expandirse esta.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/practica6/list.rb', line 43 def push_front(etiqueta) node = Struct.new(:prev, :next, :value).new(nil,nil,etiqueta) if @size == 0 @tail = node @head = node else aux = @head @head = node @head.next = aux aux.prev = @head end @size += 1 end |
#swap(a, b) ⇒ Struct
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/practica6/list.rb', line 94 def swap(a,b) if @size == 2 a.prev = b b.next = a @tail = a @head = b elsif a == @head a.next = b.next b.prev = nil b.next.prev = a a.prev = b b.next = a @head = b elsif b == @tail a.next = nil b.prev = a.prev a.prev.next = b a.prev = b b.next = a @tail = a else a.next = b.next b.prev = a.prev a.prev.next = b b.next.prev = a a.prev = b b.next = a end end |
#to_s ⇒ String
Returns retorna una cadena con la información de todos los nodos de la lista.
168 169 170 171 172 173 174 175 176 |
# File 'lib/practica6/list.rb', line 168 def to_s aux_ = @head s = "" while aux_ != nil do s << aux_.value.to_s aux_ = aux_.next end s end |