Nodo = Struct.new(:value, :next_node, :prev_node) # @author Miguel Parra Esquivel (miguelpe83) # @abstract # @since 0.6.0 # @return [String] objeto convertidos con el formato string class ListaDoble include Enumerable #Contructor de la clase Lista def initialize @cabeza = nil @cola = nil end #Recorre la lista para el uso del módulo enumerable # @return [String] objeto convertidos con el formato string del recorrido de los nodos def each nodo_aux = @cabeza while nodo_aux != nil yield nodo_aux.value nodo_aux = nodo_aux.next_node end end #Devuelve el elemento inicial de la lista # @return [String] objeto convertidos con el formato string del nodo que quiere mostrar def get_inicio return @cabeza end #Devuelve el elemento final de la linea # @return [String] objeto convertidos con el formato string del nodo que quiere mostrar def get_final return @final end #Comprueba si la lista está vacía # def is_empty # # @inicio == nil # r = false # if(@cabeza == nil) # r = true # elsif # r = false # end # return r # end #Inserta un elemento por el inicio de la lista # @param elemento [String] nodo que quiere añadir # @return [String] objeto convertidos con el formato string del nodo que quiere añadir def insertar(elemento) #inserta por el inicio nodo_aux = Nodo.new(elemento, nil, nil) #if(is_empty()) if (@cabeza == nil && @cola == nil) @cabeza = nodo_aux @final = nodo_aux @cabeza.next_node = nil @cabeza.prev_node = nil #@final = @inicio elsif aux = @cabeza @cabeza = nodo_aux @cabeza.next_node = aux @cabeza.prev_node = nil aux.prev_node = @cabeza end end #Inserta un elemento por el final de la lista # @param elemento [String] nodo que quieres añadir a la cola # @return [String] objeto convertidos con el formato string del nodo añadido def insertar_final(elemento) nodo_aux = Node.new(elemento, nil, nil) if(is_empty()) @cabeza = nodo_aux @final = nodo_aux @cabeza.next_node = nil @cabeza.prev_node = nil @final.prev_node = nil @final.next_node = nil #@final = @inicio elsif aux = @final @final = nodo_aux @final.prev_node = aux @final.next_node = nil end end #Inserta varios elementos por el inicio de la lista # @param vector [String] insertar muchos nodos y llama a insertar un nodo # @return [String] objeto convertidos con el formato string de los nodos añadidos def insertar_muchos(vector) #inserta muchos por el inicio i=0 while i