Sha256: a56e79f1e65c55705c1fdea63154ef491db10c323052dd0ca141542e48355b65

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

Nodo = Struct.new(:value, :next, :prev)

class Lista

include Enumerable

    attr_accessor :cabeza, :cola, :nodo_actual
    
    def initialize(cabeza,cola)
        @cabeza = cabeza
	@cola = cola
    end 
    
    def insertar(x)
        node = Nodo.new(x,nil,nil)

	if @cabeza==nil && @cola==nil
		node.prev = @cola
	        node.next = @cabeza
		@nodo_actual = node
	        @cabeza = node
		@cola = node
	else
		node.prev = @cabeza
		node.next = nil
		@nodo_actual = node
		@cabeza.next = node
		@cabeza = node
	end
    end 
    
    def insertar_varios(nodos)
        nodos.each do |nd|
        	insertar(nd)
        end
    end
    
    #eliminar el nodo y cambiar los valores al nodo anterior 
    def extraer_inicio()
       @cola=@cola.next
    end
    
    def extraer_final()
       @cabeza = @cabeza.prev
    end

    def to_s
         @cabeza.to_s 
    end

    def each
        while @cabeza != @cola
            yield @cabeza.value
            @cabeza=@cabeza.prev
        end

        if @cabeza == @cola
           if @cabeza == nil
            nil
           else
            yield @cola.value
           end
        end
    end
end 

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alimentohv-0.1.0 lib/alimento/lista.rb