class List

Attributes

head[R]

Punteros head y tail

tail[R]

Punteros head y tail

Public Class Methods

new(head, tail) click to toggle source

Creamos una lista e inicializamos los valores

# File lib/prct06/lista.rb, line 11
def initialize (head, tail)
        @head = head
        @tail = tail
end

Public Instance Methods

each() { |value| ... } click to toggle source

Metodo enumerable

# File lib/prct06/lista.rb, line 111
def each(&block)
        puntero=@head
        while (puntero!=nil) do
                yield puntero.value
                puntero=puntero.nest
        end
end
extraer_por_cabeza() click to toggle source

Metodo extraer nodo por cabeza

# File lib/prct06/lista.rb, line 47
def extraer_por_cabeza
        if(@head==nil)
                puts "No hay nada que extraer (lista vacia)"
        else
                aux=@head
                @head=@head.nest
                if(head!=nil)
                        @head.prev=nil
                end
                aux.nest=nil
                if(@head==nil)
                        @tail=nil
                end
        end                   

        return aux

end
extraer_por_cola() click to toggle source

Metodo extraer nodo por cola

# File lib/prct06/lista.rb, line 67
def extraer_por_cola
        if(@tail==nil)
                puts "No hay nada que extraer (lista vacia)"
        else
                aux=@tail
                @tail=@tail.prev
                aux.prev=nil
                if(@tail!=nil)
                        @tail.nest=nil
                end
        end
                
        return aux
end
insertar_por_cabeza(value) click to toggle source

Metodo insertar nodo por cabeza

# File lib/prct06/lista.rb, line 32
def insertar_por_cabeza(value)
        nodo=Node.new(value,nil,nil)
        if(@head==nil)
                @tail=nodo
                @head=nodo
        else
                nodo.nest=@head
                @head.prev=nodo
                @head=nodo
                nodo.prev=nil
        end

end
insertar_por_cola(value) click to toggle source

Metodo insertar nodo por cola

# File lib/prct06/lista.rb, line 17
def insertar_por_cola(value)
        nodo=Node.new(value,nil,nil)
        if(@tail==nil)
                @tail=nodo
                @head=nodo
        else
                nodo.prev=@tail
                @tail.nest=nodo
                @tail=nodo
                nodo.nest=nil
        end

end
ordenacion_each() click to toggle source
# File lib/prct06/lista.rb, line 138
def ordenacion_each
        @resultado = self.map { |x| x }
        indice=0
        @resultado.each do |x|
                var = x
                i = indice
                indice2=indice + 1

                @resultado[indice2..@resultado.length-1].each do |y|
                        if var > y
                                var = y
                                i = indice2
                        end
                        indice2+=1
                end

                @resultado[i] = x
                @resultado[indice] = var

                indice+=1
        end
        @resultado
end
ordenacion_for() click to toggle source
# File lib/prct06/lista.rb, line 119
def ordenacion_for
        @resultado = self.map { |x| x }
        for x in 0..self.count-1
                var = @resultado[x]
                i = x

                for y in x + 1..self.count-1
                        if var > @resultado[y]
                                var = @resultado[y]
                                i = y
                        end
                end

                @resultado[i] = @resultado[x]
                @resultado[x] = var
        end
        @resultado
end
to_s() click to toggle source

Metodo convertir a cadena

# File lib/prct06/lista.rb, line 92
def to_s

        puntero=@head
        cadena='['
                if(@head!=nil)
                        while (puntero!= nil) do
                                cadena+=puntero.value.to_s + ']'
                                if(puntero.nest!=nil)
                                        puntero=puntero.nest
                                        cadena+= '['
                                else
                                        puntero=nil
                                end
                        end
                end

end
vacio() click to toggle source

Metodo comprobar si esta vacĂ­o

# File lib/prct06/lista.rb, line 83
def vacio
        if(@tail==nil)
                return true
        else
                return false
        end
end