Class: Lista
- Inherits:
-
Object
- Object
- Lista
- Includes:
- Comparable, Enumerable
- Defined in:
- lib/nutrientes/lista.rb
Overview
Clase que representa una lista doblemente enlazada
Instance Method Summary collapse
-
#each ⇒ Object
Itera todos los elementos de la lista.
-
#extraer_cabeza ⇒ Object
Extrae el primer elemento de la lista.
-
#extraer_cola ⇒ Object
Extrae el ultimo elemento de la lista.
-
#initialize ⇒ Lista
constructor
A new instance of Lista.
-
#insertar(elemento) ⇒ Object
Inserta un elemento en la lista.
-
#insertar_a(elementos) ⇒ Object
Inserta varios elementos en la lista.
-
#numero_nodos ⇒ Numeric
Obtiene el numero de elementos en la lista.
Constructor Details
#initialize ⇒ Lista
Returns a new instance of Lista.
6 7 8 9 |
# File 'lib/nutrientes/lista.rb', line 6 def initialize @cabeza = nil @cola = nil end |
Instance Method Details
#each ⇒ Object
Itera todos los elementos de la lista
84 85 86 87 88 89 90 |
# File 'lib/nutrientes/lista.rb', line 84 def each nodo_actual = @cabeza 1.upto(numero_nodos) do yield nodo_actual.valor nodo_actual = nodo_actual.siguiente end end |
#extraer_cabeza ⇒ Object
Extrae el primer elemento de la lista
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/nutrientes/lista.rb', line 35 def extraer_cabeza if @cabeza.nil? nil else antigua_cabeza = @cabeza siguiente = @cabeza.siguiente if siguiente.nil? @cabeza = nil @cola = nil else siguiente.previo = nil @cabeza = siguiente end antigua_cabeza.valor end end |
#extraer_cola ⇒ Object
Extrae el ultimo elemento de la lista
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/nutrientes/lista.rb', line 54 def extraer_cola if @cola.nil? nil else antigua_cola = @cola previo = @cola.previo if previo.nil? @cabeza = nil @cola = nil else previo.previo = nil @cola = previo end antigua_cola.valor end end |
#insertar(elemento) ⇒ Object
Inserta un elemento en la lista
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/nutrientes/lista.rb', line 13 def insertar(elemento) nodo = Nodo.new nodo.valor = elemento if @cabeza.nil? @cabeza = nodo @cola = nodo else @cola.siguiente = nodo nodo.previo = @cola @cola = nodo end end |
#insertar_a(elementos) ⇒ Object
Inserta varios elementos en la lista
28 29 30 31 |
# File 'lib/nutrientes/lista.rb', line 28 def insertar_a(elementos) raise ArgumentError, "elementos no es un array" unless elementos.is_a? Array elementos.each {|e| insertar e} end |
#numero_nodos ⇒ Numeric
Obtiene el numero de elementos en la lista
73 74 75 76 77 78 79 80 81 |
# File 'lib/nutrientes/lista.rb', line 73 def numero_nodos nodo_actual = @cabeza numero_nodos = 0 while nodo_actual != nil do nodo_actual = nodo_actual.siguiente numero_nodos += 1 end numero_nodos end |