Class: Lista

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

Overview

Esta clase representa una lista doblemente enlazada

Author:

  • Miguel JimĂ©nez Gomis

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(val) ⇒ Lista

Returns a new instance of Lista



11
12
13
14
# File 'lib/nutrientes/lista.rb', line 11

def initialize(val)
    @head = Node.new(val, nil, nil)
    @tail = @head
end

Instance Attribute Details

#headObject (readonly)

Esto permite la lectura de la cola y la cabeza de la lista



9
10
11
# File 'lib/nutrientes/lista.rb', line 9

def head
  @head
end

#tailObject (readonly)

Esto permite la lectura de la cola y la cabeza de la lista



9
10
11
# File 'lib/nutrientes/lista.rb', line 9

def tail
  @tail
end

Instance Method Details

#eachObject

Metodo each para que la clase sea enumerable



67
68
69
70
71
72
73
# File 'lib/nutrientes/lista.rb', line 67

def each
   actual = @head
   while actual != nil do
       yield actual.value
       actual = actual.next_
   end
end

#extraer_colaObject

Returns retorna el ultimo nodo de la lista

Returns:

  • retorna el ultimo nodo de la lista



47
48
49
50
51
52
# File 'lib/nutrientes/lista.rb', line 47

def extraer_cola
   dummy = @tail.value 
   @tail = @tail.prev
   @tail.next_ = nil
   return dummy
end

#extraer_headObject

Returns retorna el primer nodo de la lista

Returns:

  • retorna el primer nodo de la lista



37
38
39
40
41
42
# File 'lib/nutrientes/lista.rb', line 37

def extraer_head
   dummy = @head.value 
   @head = @head.next_
   @head.prev = nil
   return dummy
end

#insertar_nodo_cola(val) ⇒ Object

Parameters:

  • val

    Cualquier objeto que se quiera como valor



19
20
21
22
23
# File 'lib/nutrientes/lista.rb', line 19

def insertar_nodo_cola(val)
    aux = Node.new(val,nil,@tail)
    @tail.next_ = aux
    @tail = aux
end

#insertar_nodo_head(val) ⇒ Object

Parameters:

  • val

    Cualquier objeto que se quiera como valor



28
29
30
31
32
# File 'lib/nutrientes/lista.rb', line 28

def insertar_nodo_head(val)
    aux = Node.new(val,@head,nil)
    @head.prev = aux
    @head = aux
end

#to_sObject

Convierte a un string formateado la lista doblemente enlazada



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

def to_s
   string = "("
   dummy = @head
   while (dummy != nil) do
       string += "#{dummy.value.to_s},"
       dummy = dummy.next_
   end
   string += ")"
   return string
end