class Lista
Clase lista, que representa una lista simplemente enlazada de nodos
Public Class Methods
new()
click to toggle source
Método constructor
# File lib/exam/lista.rb, line 19 def initialize @head = nil @tail = nil end
Public Instance Methods
addn(nodo2)
click to toggle source
Coloca un nuevo nodo como cabeza (push)
# File lib/exam/lista.rb, line 25 def addn(nodo2) #coloca un nuevo nodo como cabeza !push nodo = Nodo.new() if (nodo2.class == Nodo) nodo = nodo2 else nodo.value = nodo2 end nodo.next = @head if (!@head.nil? && @head.next.nil?) @tail = @head @tail.next = nil end if (!head.nil?) @head.previus = nodo end nodo.previus = nil #si en vez de nil ponemos tail, es una lsita circular, es decir unimos head con tail en previus @head = nodo #@tail.next = @head añadir esto para que la lista sea circular tail apuntara a head como siguiente end
deln()
click to toggle source
Elimina el nodo cabeza (pop)
# File lib/exam/lista.rb, line 54 def deln aux = @head if (@head.next.nil?) @tail = nil @head = nil else @head = @head.next @head.previus = @tail end aux.value end
each(&block)
click to toggle source
Método que sirve para iterar por todos los nodos de la lista
# File lib/exam/lista.rb, line 77 def each(&block) current_node = @head while current_node != nil block.call(current_node) current_node = current_node.next end end
head()
click to toggle source
Devuelve el nodo que esta en cabeza
# File lib/exam/lista.rb, line 67 def head @head end
ordenar()
click to toggle source
Método que sirve para ordenar la lista.
# File lib/exam/lista.rb, line 87 def ordenar() contador = (self.count) contador = contador-1 aux = self.sort @head = nil @tail = aux[0] while (contador >= 0) do self.addn(aux[contador]) contador = contador-1 end end
tail()
click to toggle source
Devuelve el nodo que está al final
# File lib/exam/lista.rb, line 72 def tail @tail end
to_s()
click to toggle source
Devuelve la lista como String (usado en testeo)
# File lib/exam/lista.rb, line 101 def to_s #para testear self.each do |l| print l.value.to_s + " -> " end puts "" end