Class: Alimento::Lista

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

Overview

Clase que representa a una lista doblemente enlazada Se ha incluido el mixin Enumerable

Instance Method Summary collapse

Methods included from Enumerable

#sort_each, #sort_for

Constructor Details

#initialize(head, tail) ⇒ Lista

Se asignan la cabeza (@head) y la cola (@tail) y se enlazan



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

def initialize(head, tail)
  @head = head
  @tail = tail
  
  @head.siguiente = @tail
  @tail.anterior = @head
end

Instance Method Details

#eachObject

Se incluye el método del mixin Enumerable Se define como una iteración sobre los valores de cada nodod de la lista



59
60
61
62
63
64
65
# File 'lib/alimento/lista.rb', line 59

def each
  tmp = @head
  while tmp != nil do
    yield tmp.valor
    tmp = tmp.siguiente
  end
end

#headObject

Getter/Setter de @head



21
22
23
# File 'lib/alimento/lista.rb', line 21

def head
  @head
end

#head_outObject

Método que extrae/elimina el primer valor de la lista



42
43
44
45
46
47
# File 'lib/alimento/lista.rb', line 42

def head_out
  aux = @head.siguiente
  @head.siguiente = nil
  @head = aux
  @head.anterior = nil
end

#insert(nodo) ⇒ Object

Método que inserta un nodo en la cabeza de la lista



31
32
33
34
35
36
37
38
39
# File 'lib/alimento/lista.rb', line 31

def insert(nodo)
  if(nodo.is_a?Nodo) then
    aux = @head
    @head = nodo
    @head.anterior = nil
    @head.siguiente = aux
    aux.anterior = @head
  end
end

#tailObject

Getter/Setter de @tail



26
27
28
# File 'lib/alimento/lista.rb', line 26

def tail
  @tail
end

#tail_outObject

Método que extrae/elimina el último valor de la lista



50
51
52
53
54
55
# File 'lib/alimento/lista.rb', line 50

def tail_out
  aux = @tail.anterior
  @tail.anterior = nil
  @tail = aux
  @tail.siguiente = nil
end