Sha256: 2f67635429990c1c21c75d94bcce741edab9ee88775c673d20017d032cfbe36b

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

require "dieta/dieta_m"

module Lista

  # @attr [Object] value Objeto contenido en el nodo
  # @attr [Node] next Nodo siguiente
  # @attr [Node] prev Nodo previo
  Node = Struct.new(:value, :next, :prev)

  class MD_list

    include Enumerable
  	
    # Variable que almacena la nodo cabeza (primero) de la lista
  	attr_accessor :head
    # Variable que almacena la nodo cola (final) de la lista
    attr_accessor :tail

    # Inicializa la lista
  	def initialize()

  		@head = nil
  		@tail = nil

  	end

    # Extrae el primer nodo
  	def extract_first

  		nodo = @head

  		if nodo != nil
  			if nodo.next != nil
  				@head = nodo.next
  			else
  				@head = nil
  				@tail = nil
  			end
  		end

  		nodo

  	end

    # Inserta un nodo
    # @param node el nodo que quieras insertar
  	def insert(node)
      if @head == nil
        @head = node
      elsif
        node.prev = @tail
        @tail.next = node
      end
      	@tail = node
  	end

    # Extrae el Ășltimo elemento de la lista
    def extract_end
      nodo = @tail

      if nodo != nil
        if nodo.prev != nil
          @tail = nodo.prev
          @tail.next = nil
        else
          @head = nil
          @tail = nil
        end
      end

      nodo
    end

    # Itera en la lista
    def each
      i = @head;
      while i != nil
          yield i.value
          i = i.next
      end
    end


  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dieta_alu0100618426-0.1.0 lib/dieta/lista.rb