Class: List_double

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

Overview

Clase Lista_double que crea una lista doblemente enlazada enlazada

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeList_double

Initialize que pone los apuntadores del inicio y del fin a nulo indicando asi que la lista esta vacia



14
15
16
17
# File 'lib/menu/list_double.rb', line 14

def initialize
    @principio = nil
    @final = nil
end

Instance Attribute Details

#finalObject

final con el apuntador del ultimo elemento de la lista



8
9
10
# File 'lib/menu/list_double.rb', line 8

def final
  @final
end

#principioObject

principio con el apuntador del inicio de la lista



5
6
7
# File 'lib/menu/list_double.rb', line 5

def principio
  @principio
end

Instance Method Details

#eachObject

Metodo Each que es necesario para que la lista doble sea enumerable



20
21
22
23
24
25
26
# File 'lib/menu/list_double.rb', line 20

def each
    n = @principio
    while n!=nil do
        yield n.value
        n = n.next
    end
end

#extraerfObject

Metodo extraerf que sirve para extraer un nodo al final



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/menu/list_double.rb', line 67

def extraerf
    aux = @final
    @final = @final.prev
    
    if(@final == nil) then
        @principio = nil
    else
        @final.next = nil
    end
    return aux
end

#extraerpObject

Metodo extraerp que sirve para extraer un nodo al principio



56
57
58
59
60
61
62
63
64
# File 'lib/menu/list_double.rb', line 56

def extraerp
   aux = @principio
   @principio = @principio.next
   
   if(@principio == nil) then 
    @final = nil
   end
   return aux
end

#insertarf(nodo) ⇒ Object

Metodo insertarf que sirve para insertar un nodo al final



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/menu/list_double.rb', line 42

def insertarf(nodo)
     n = Node_double.new(nodo, nil, nil)
     n.prev = @final
     n.next = nil

    if(@final == nil) then
        @principio = n
    else
        @final.next = n
    end
    @final = n
end

#insertarp(nodo) ⇒ Object

Metodo insertarp que sirve para insertar un nodo al principio



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/menu/list_double.rb', line 29

def insertarp(nodo)
     n = Node_double.new(nodo, nil, nil)
     n.next = @principio
     n.prev = nil
     if(@final == nil) then
         @final = n
     else
         @principio.prev = n;
     end
     @principio = n
end