Class: List
Overview
Clase Lista para guardar alimentos
Instance Attribute Summary collapse
-
#head ⇒ Object
Returns the value of attribute head.
-
#tail ⇒ Object
Returns the value of attribute tail.
Instance Method Summary collapse
-
#each ⇒ Object
Este método es utilizado para poder usar el módulo Enumerable en la clase lista.
-
#extract_head ⇒ Object
Este método extrae el primer nodo de la lista.
-
#extract_tail ⇒ Object
Este método extrae el último nodo de la lista.
-
#initialize ⇒ List
constructor
Este metodo crea una lista vacía.
-
#insert(nodo) ⇒ Object
Este método permite meter nodos en la lista.
- #ordenar_each(lista_ordenada) ⇒ Object
- #ordenar_for(lista_ordenada) ⇒ Object
- #size ⇒ Object
Constructor Details
Instance Attribute Details
#head ⇒ Object
Returns the value of attribute head.
18 19 20 |
# File 'lib/pract6/List.rb', line 18 def head @head end |
#tail ⇒ Object
Returns the value of attribute tail.
18 19 20 |
# File 'lib/pract6/List.rb', line 18 def tail @tail end |
Instance Method Details
#each ⇒ Object
Este método es utilizado para poder usar el módulo Enumerable en la clase lista
83 84 85 86 87 88 89 |
# File 'lib/pract6/List.rb', line 83 def each nodo = @head while nodo != nil yield nodo.value nodo = nodo.next end end |
#extract_head ⇒ Object
Este método extrae el primer nodo de la lista
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pract6/List.rb', line 55 def extract_head nodo = Node.new() if @head != @tail nodo = @head @head = @head.next @head.prev = nil else nodo = @head @head = @head.next end return nodo.value end |
#extract_tail ⇒ Object
Este método extrae el último nodo de la lista
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/pract6/List.rb', line 69 def extract_tail nodo = Node.new() if @tail != @head nodo = @tail @tail = @tail.prev else nodo = @tail @head = nil @tail = @head end return nodo.value end |
#insert(nodo) ⇒ Object
Este método permite meter nodos en la lista
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/pract6/List.rb', line 39 def insert(nodo) if @head == nil @head = nodo @tail = @head elsif @head == @tail @tail.prev = nodo nodo.next = @tail @head = nodo else @head.prev = nodo nodo.next = @head @head = nodo end end |
#ordenar_each(lista_ordenada) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/pract6/List.rb', line 119 def ordenar_each(lista_ordenada) self.each do |i| min = self.max self.each do |j| if(lista_ordenada.head == nil) nodo = Node.new() nodo.value=self.min lista_ordenada.insert(nodo) else if(min >= j && j > lista_ordenada.head.value) min = j end end end nodo = Node.new() nodo.value = min lista_ordenada.insert(nodo) end lista_ordenada.extract_head return lista_ordenada end |
#ordenar_for(lista_ordenada) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/pract6/List.rb', line 92 def ordenar_for(lista_ordenada) for i in (self) min = self.max for j in (self) if(lista_ordenada.head == nil) nodo = Node.new() nodo.value=self.min lista_ordenada.insert(nodo) else if(min >= j && j > lista_ordenada.head.value) min = j end end end nodo = Node.new() nodo.value = min lista_ordenada.insert(nodo) end lista_ordenada.extract_head return lista_ordenada end |
#size ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/pract6/List.rb', line 30 def size aux = 0 self.each do |i| aux +=1 end return aux end |