Class: Lista

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

Overview

Lista doblemente enlazada para almacenar elementos.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLista

Contructor de la clase Lista



8
9
10
11
# File 'lib/menudietetico/menudietetico.rb', line 8

def initialize
    @inicio = nil
    @final = nil
end

Instance Attribute Details

#finalObject

Returns the value of attribute final.



132
133
134
# File 'lib/menudietetico/menudietetico.rb', line 132

def final
  @final
end

#inicioObject

Returns the value of attribute inicio.



131
132
133
# File 'lib/menudietetico/menudietetico.rb', line 131

def inicio
  @inicio
end

Instance Method Details

#eachObject

Recorre la lista para el uso del módulo enumerable



14
15
16
17
18
19
20
# File 'lib/menudietetico/menudietetico.rb', line 14

def each
    nodo_aux = @inicio
    while nodo_aux != nil
        yield nodo_aux.value
        nodo_aux = nodo_aux.next
    end
end

#extraerObject

Extrae el inicio de la lista



103
104
105
106
107
108
109
110
111
112
113
# File 'lib/menudietetico/menudietetico.rb', line 103

def extraer 
    if(is_empty())
        return nil
    elsif
        node_aux = @inicio
        @inicio = @inicio.next
        node_aux.next = nil
        node_aux.previo = nil
        return node_aux.value
    end
end

#extraer_finalObject

Extrae un elemento del final de la lista



116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/menudietetico/menudietetico.rb', line 116

def extraer_final
    if(is_empty())
        return nil
    elsif
        node_aux = @final
        @final = @final.previo
        if(@final!=nil)
            @final.next=nil
        elsif
            @inicio=nil
        end
        return node_aux.value
    end
end

#get_finalObject

Devuelve el elemento final de la linea



28
29
30
# File 'lib/menudietetico/menudietetico.rb', line 28

def get_final
   return @final 
end

#get_inicioObject

Devuelve el elemento inicial de la lista



23
24
25
# File 'lib/menudietetico/menudietetico.rb', line 23

def get_inicio
   return @inicio 
end

#insertar(elemento) ⇒ Object

Inserta un elemento por el inicio de la lista



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/menudietetico/menudietetico.rb', line 45

def insertar(elemento) #inserta por el inicio
    nodo_aux = Node.new(elemento, nil, nil)
    if(is_empty())
        @inicio = nodo_aux
        @final = nodo_aux
        @inicio.next = nil
        @inicio.previo = nil
        #@final = @inicio
    elsif
        aux = @inicio
        @inicio = nodo_aux
        @inicio.next = aux
        @inicio.previo = nil
        aux.previo = @inicio
    end
end

#insertar_final(elemento) ⇒ Object

Inserta un elemento por el final de la lista



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/menudietetico/menudietetico.rb', line 63

def insertar_final(elemento)
    nodo_aux = Node.new(elemento, nil, nil)
    if(is_empty())
        @inicio = nodo_aux
        @final = nodo_aux
        @inicio.next = nil
        @inicio.previo = nil
        @final.previo = nil
        @final.next = nil
        #@final = @inicio
    elsif
        aux = @final
        @final = nodo_aux
        @final.previo = aux
        @final.next = nil
    end
end

#insertar_muchos(vector) ⇒ Object

Inserta varios elementos por el inicio de la lista



82
83
84
85
86
87
88
89
# File 'lib/menudietetico/menudietetico.rb', line 82

def insertar_muchos(vector) #inserta muchos por el inicio
    i=0
    
    while i<vector.length
        self.insertar(vector[i])
        i=i+1
    end
end

#insertar_muchos_final(vector) ⇒ Object

Inserta varios elementos por el final de la lista Se le pasa como argumento un vector con los elementos a insertar en la lista



93
94
95
96
97
98
99
100
# File 'lib/menudietetico/menudietetico.rb', line 93

def insertar_muchos_final(vector) 
    i=0
    
    while i<vector.length
        self.insertar_final(vector[i])
        i=i+1
    end
end

#is_emptyObject

Comprueba si la lista está vacía



33
34
35
36
37
38
39
40
41
42
# File 'lib/menudietetico/menudietetico.rb', line 33

def is_empty
    # @inicio == nil
    r = false
    if(@inicio == nil)
        r = true
    elsif
        r = false
    end
    return r
end