Class: Bibliografia::Lista_enlazada

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/bibliografia/lista_enlazada.rb

Overview

Clase Lista enlazada por ambos lados

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLista_enlazada

Constructor



20
21
22
23
# File 'lib/bibliografia/lista_enlazada.rb', line 20

def initialize
    @principio = nil
    @final = nil
end

Instance Attribute Details

#finalObject (readonly)

Getter + Setter



17
18
19
# File 'lib/bibliografia/lista_enlazada.rb', line 17

def final
  @final
end

#principioObject (readonly)

Getter + Setter



17
18
19
# File 'lib/bibliografia/lista_enlazada.rb', line 17

def principio
  @principio
end

Instance Method Details

#eachObject

Para hacer la clase enumerable



79
80
81
82
83
84
85
# File 'lib/bibliografia/lista_enlazada.rb', line 79

def each
    nodo  = @principio
    while (nodo != nil)
        yield nodo.referencia
        nodo = nodo.siguiente
    end
end

#extraer_lista_finalObject

Extraer nodo de la lista por el final



67
68
69
70
71
72
73
74
75
76
# File 'lib/bibliografia/lista_enlazada.rb', line 67

def extraer_lista_final
    ref = @final
    @final = ref.anterior
    if @final != nil
        @final.siguiente = nil
    else
        @principio = @final
    end
    ref
end

#extraer_lista_principioObject

Extraer nodo de la lista por el principio



43
44
45
46
47
48
49
50
51
52
# File 'lib/bibliografia/lista_enlazada.rb', line 43

def extraer_lista_principio
    ref = @principio
    @principio = ref.siguiente
    if @principio != nil
        @principio.anterior = nil
    else
        @final = @principio
    end
    ref
end

#insertar_lista_final(referencia) ⇒ Object

Insertar nodo en la lista por el final



55
56
57
58
59
60
61
62
63
64
# File 'lib/bibliografia/lista_enlazada.rb', line 55

def insertar_lista_final(referencia)
    if @final != nil
        @final = Nodo.new(referencia, nil, @final)
        n = @final.anterior
        n.siguiente = @final
    else
        @principio = Nodo.new(referencia, nil, nil)
        @final = @principio
    end
end

#insertar_lista_principio(referencia) ⇒ Object

Insertar nodo en la lista por el principio



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/bibliografia/lista_enlazada.rb', line 26

def insertar_lista_principio(referencia)
    if @principio != nil && @principio.siguiente != nil
        n = @principio
        @principio = Nodo.new(referencia, n, nil)
        n.anterior = @principio
    elsif @principio != nil
        n = @principio
        @principio = Nodo.new(referencia, n, nil)
        n.anterior = @principio
        @final = n
    else
        @principio = Nodo.new(referencia, nil, nil)
        @final = @principio
    end
end