class DLinkedList::List

Lista de referencias bibliográficas.

Attributes

head[R]

Nodo cabeza de la lista.

size[R]

Tamaño de la lista.

tail[R]

Nodo cola de la lista.

Public Class Methods

new() click to toggle source

Inicializa la lista vacía.

# File lib/dLinkedList/dLinkedList.rb, line 229
def initialize()
        @head = nil
        @tail = nil
        @size = 0
end

Public Instance Methods

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

Itera la lista, ejecutando el bloque pasado pasándole como parámetro el valor de cada nodo.

# File lib/dLinkedList/dLinkedList.rb, line 293
def each
        
        nodo = @head
        until nodo.nil?
                yield nodo.value
                nodo = nodo.next_node
        end
        
end
empty?() click to toggle source

Devuelve si la lista está vacía.

# File lib/dLinkedList/dLinkedList.rb, line 236
def empty?()
        return (@head == nil)
end
pop() click to toggle source

Extrae y devuelve la referencia del principio de la lista.

# File lib/dLinkedList/dLinkedList.rb, line 273
def pop()
        
        raise RuntimeError, "[List.pop]: No se puede extraer elementos de una lista vacía" if empty?()
        
        nodo = @head
        if @head.equal?(@tail)
                @head = nil
                @tail = nil
        else
                @head = @head.next_node
                @head.prev_node = nil
        end
        
        @size -= 1
        
        return nodo.value
        
end
push(ref) click to toggle source

Inserta la referencia ref al final de la lista.

# File lib/dLinkedList/dLinkedList.rb, line 255
def push(ref)
        if empty?()
                return push_empty(ref)
        else
                nodo = Node.new(ref, nil, @tail)
                @tail.next_node = nodo
                @tail = nodo
                @size += 1
                return self
        end
end
push_multi(*refs) click to toggle source

Inserta múltiples elementos al final de la lista.

# File lib/dLinkedList/dLinkedList.rb, line 268
def push_multi(*refs)
        refs.each { |ref| push(ref)}
end
to_s() click to toggle source

Devuelve la lista de referencias ordenadas en líneas distintas como cadena.

# File lib/dLinkedList/dLinkedList.rb, line 304
def to_s
        s_arr = self.sort()
        return s_arr.join("\n")
end

Private Instance Methods

push_empty(ref) click to toggle source

Inserta una referencia en la lista vacía.

# File lib/dLinkedList/dLinkedList.rb, line 241
def push_empty(ref)
        
        raise RuntimeError, "[List.push_empty]: Lista no vacía" unless empty?()
        
        nodo = Node.new(ref)
        @head = nodo
        @tail = nodo
        @size += 1
        
        return self
        
end