Class: Lista

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

Overview

Clase Lista que representa una lista doblemente enlazada con un inicio y un fin.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLista

Constructor de la clase



33
34
35
36
# File 'lib/menu/list.rb', line 33

def initialize
    @inicio = nil
    @final = nil
end

Instance Attribute Details

#finalObject (readonly)

Returns the value of attribute final.



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

def final
  @final
end

#inicioObject (readonly)

Returns the value of attribute inicio.



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

def inicio
  @inicio
end

Instance Method Details

#eachObject

Método que recorre la lista y devuelve un vector con los valores de esta, necesario para los métodos de Enumerable (sort,min,max)



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

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

#emptyObject

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



49
50
51
52
53
54
55
# File 'lib/menu/list.rb', line 49

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

#extractObject

Método que extrae un valor de la lista (por el inicio)



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

def extract
    if(empty)
        nil
    elsif
        node = @inicio
        @inicio = node.next
        if(!empty)
            @inicio.prev = nil
        end 
        node.next = nil
        node.value
    end
end

#get_finalObject

Método que obtiene el inicio de la lista



44
45
46
# File 'lib/menu/list.rb', line 44

def get_final
    @final
end

#get_inicioObject

Método que obtiene el inicio de la lista



39
40
41
# File 'lib/menu/list.rb', line 39

def get_inicio
    @inicio
end

#insert(x) ⇒ Object

Método que inserta un valor en la lista (por el final)



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/menu/list.rb', line 58

def insert(x)
    node = Nodo.new(x,nil,nil)
    if(empty)
        @inicio = node
        @final = node
    elsif
        @final.next = node
        node.prev = @final
        @final = node
    end
    true
end

#to_sObject



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/menu/list.rb', line 19

def to_s
    
    output = ""
    node = @inicio
    
    while(node!=nil)
        output << "#{node.value}"
        node = node.next
    end
    
    output
    
end