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