Class: Lista

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/menu/codigo_lista.rb

Overview

Clase que representa una lista doblemente enlazada

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLista

Meodo initialize para la llamada del new



21
22
23
24
# File 'lib/menu/codigo_lista.rb', line 21

def initialize()
    @inicio = nil
    @final = nil
end

Instance Attribute Details

#finalObject (readonly)

Atributos



9
10
11
# File 'lib/menu/codigo_lista.rb', line 9

def final
  @final
end

#inicioObject (readonly)

Atributos



9
10
11
# File 'lib/menu/codigo_lista.rb', line 9

def inicio
  @inicio
end

Instance Method Details

#eachObject

Método each para que la clase sea enumerable



12
13
14
15
16
17
18
# File 'lib/menu/codigo_lista.rb', line 12

def each
    nodo = @inicio
    while (nodo != nil)
        yield nodo.value
        nodo = nodo.next
    end
end

#emptyObject

Método que compurba si la lista está vacía



27
28
29
30
31
32
33
34
35
# File 'lib/menu/codigo_lista.rb', line 27

def empty()
    if (@inicio == nil)
        vacio = true
    else
        vacio = false
    end

    vacio
end

#extract_finalObject

Método que extrae un menú por el final



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/menu/codigo_lista.rb', line 88

def extract_final
    if(empty)
        valor = false
    else
        valor = @final.value
        if (@final.prev == nil)
            @inicio = nil
            @final = nil
            else
                @final = @final.prev
                @final.next = nil
            end
    end

    valor
end

#extract_inicioObject

Método que extrae un menú por el inicio



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/menu/codigo_lista.rb', line 54

def extract_inicio
    if(empty)
        valor = false
    else
        valor = @inicio.value
        if (@inicio.next == nil)
            @inicio = nil
            @final = nil
            else
                @inicio = @inicio.next
                @inicio.prev = nil
            end
    end

    valor
end

#insert_final(valor) ⇒ Object

Método que inserta un menú por el final



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/menu/codigo_lista.rb', line 72

def insert_final (valor)
    aux_nodo = Nodo.new(valor, nil, nil)

    if(empty)
        @final = aux_nodo
        @inicio = aux_nodo
    else
        aux_nodo.prev = @final
        @final.next = aux_nodo
        @final = aux_nodo
    end

    true
end

#insert_inicio(valor) ⇒ Object

Método que inserta un menú por el inicio



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/menu/codigo_lista.rb', line 38

def insert_inicio (valor)
    aux_nodo = Nodo.new(valor, nil, nil)

    if(empty)
        @final = aux_nodo
        @inicio = aux_nodo
    else
        aux_nodo.next = @inicio
        @inicio.prev = aux_nodo
        @inicio = aux_nodo
    end

    true
end