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