Class: DlinkedList
Overview
Clase DlinkedList almacena los datos en una lista
Instance Attribute Summary collapse
-
#head ⇒ Object
readonly
Returns the value of attribute head.
-
#tail ⇒ Object
readonly
Returns the value of attribute tail.
Instance Method Summary collapse
-
#each ⇒ Object
Recorre la lista desde la cabeza hasta a cola.
-
#initialize ⇒ DlinkedList
constructor
A new instance of DlinkedList.
-
#insertHead(value) ⇒ Object
Inserta por la cabeza de la lista un nodo.
-
#insertTail(value) ⇒ Object
Inserta por la cola de la lista un nodo.
- #ordenarEach ⇒ Object
- #ordenarFor ⇒ Object
-
#popHead ⇒ Object
Extrae por la cabeza de la lista un nodo.
-
#popTail ⇒ Object
Extrae por la cola de la lista un nodo.
-
#removeAll ⇒ Object
Extrae por la cabeza de la lista todos los nodos que quedan en la lista si no esta vacia.
-
#to_s ⇒ Object
Define el metodo para imprimir por pantalla .
Constructor Details
#initialize ⇒ DlinkedList
Returns a new instance of DlinkedList.
17 18 19 20 21 |
# File 'lib/DlinkedList.rb', line 17 def initialize() @head = @tail = nil end |
Instance Attribute Details
#head ⇒ Object (readonly)
Returns the value of attribute head.
15 16 17 |
# File 'lib/DlinkedList.rb', line 15 def head @head end |
#tail ⇒ Object (readonly)
Returns the value of attribute tail.
15 16 17 |
# File 'lib/DlinkedList.rb', line 15 def tail @tail end |
Instance Method Details
#each ⇒ Object
Recorre la lista desde la cabeza hasta a cola
Parameters:
No recibe nada
Returns:
No retorna nada
163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/DlinkedList.rb', line 163 def each nodo = @head while nodo != nil yield nodo.value nodo = nodo.next end end |
#insertHead(value) ⇒ Object
Inserta por la cabeza de la lista un nodo
Parameters:
Recive un valor o dato que se quiera insertar
Returns:
No retorna nada
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/DlinkedList.rb', line 56 def insertHead(value) n = Node.new(value) if @head.nil? @head = n @tail = @head else @head.next = n n.prev = @head @head = n end end |
#insertTail(value) ⇒ Object
Inserta por la cola de la lista un nodo
Parameters:
Recive un valor o dato que se quiera insertar
Returns:
No retorna nada
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/DlinkedList.rb', line 30 def insertTail(value) n = Node.new(value) if @head.nil? @tail = n @head = @tail else @tail.next = n n.prev = @tail @tail = n end end |
#ordenarEach ⇒ Object
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
# File 'lib/DlinkedList.rb', line 210 def ordenarEach arrayOrd = [] each do |nodo| if arrayOrd.empty? arrayOrd.push(nodo) else indice = 0 while indice < arrayOrd.length if nodo <= arrayOrd[indice] arrayOrd.insert(indice, nodo) break elsif indice == arrayOrd.length-1 arrayOrd.insert(indice+1, nodo) break end indice+=1 end end end return arrayOrd end |
#ordenarFor ⇒ Object
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/DlinkedList.rb', line 188 def ordenarFor arrayOrd = [] for nodo in self if arrayOrd.empty? arrayOrd.push(nodo) else indice = 0 while indice < arrayOrd.length if nodo <= arrayOrd[indice] arrayOrd.insert(indice, nodo) break elsif indice == arrayOrd.length-1 arrayOrd.insert(indice+1, nodo) break end indice+=1 end end end return arrayOrd end |
#popHead ⇒ Object
Extrae por la cabeza de la lista un nodo
Parameters:
No recibe nada
Returns:
Retorna el nodo extraido
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/DlinkedList.rb', line 82 def popHead unless @head.nil? aux = @head unless @head.next.nil? @head.next.prev = nil @head = @head.next else @head = nil @tail = nil end aux end end |
#popTail ⇒ Object
Extrae por la cola de la lista un nodo
Parameters:
No recibe nada
Returns:
Retorna el nodo extraido
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/DlinkedList.rb', line 111 def popTail unless @tail.nil? aux = @tail unless @tail.prev.nil? @tail.prev.next = nil @tail = @tail.prev else @head = nil @tail = nil end aux end end |
#removeAll ⇒ Object
Extrae por la cabeza de la lista todos los nodos que quedan en la lista si no esta vacia
Parameters:
No recibe nada
Returns:
Retorna los nodos extraidos
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/DlinkedList.rb', line 140 def removeAll unless @head.nil? while @head != nil aux = @head.next self.popHead @head = aux aux end end end |
#to_s ⇒ Object
Define el metodo para imprimir por pantalla
Parameters:
No recibe ninguno
Returns:
Un string con el contenido de las variables
182 183 184 185 186 |
# File 'lib/DlinkedList.rb', line 182 def to_s each {|x| puts x} end |