Class: ListaDobleEnlazada

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/gema/ListaDobleEnlazada.rb

Direct Known Subclasses

Dieta, Menu, Plato

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeListaDobleEnlazada

Returns a new instance of ListaDobleEnlazada.



8
9
10
11
12
# File 'lib/gema/ListaDobleEnlazada.rb', line 8

def initialize()
	@size = 0
	@head = nil
	@tail = nil
end

Instance Attribute Details

#headObject (readonly)

Returns the value of attribute head.



6
7
8
# File 'lib/gema/ListaDobleEnlazada.rb', line 6

def head
  @head
end

#sizeObject (readonly)

Returns the value of attribute size.



6
7
8
# File 'lib/gema/ListaDobleEnlazada.rb', line 6

def size
  @size
end

#tailObject (readonly)

Returns the value of attribute tail.



6
7
8
# File 'lib/gema/ListaDobleEnlazada.rb', line 6

def tail
  @tail
end

Instance Method Details

#[](index) ⇒ Object

Retorna el valor situado en la posición <index> del objeto tipo ListaDobleEnlazada

Parameters:

  • index (Integer)

    Indice de la posición del elemento que queremos recoger



92
93
94
95
96
97
98
99
100
# File 'lib/gema/ListaDobleEnlazada.rb', line 92

def [](index)
	result = nil
	count = 0
	return self.each_with_index do |value,index_r|
		if(index_r == index) then	
			return value
		 end	
	end
end

#eachObject

Metodo de ‘Enumerable’ implementado para que sea capaz de trabajar con objetos de tipo LsitaDobleEnlazada

Parameters:

  • Bloque_Aridad1 (Clausure)

    Recibe un bloque que espera como argumento cada elemento de la lista



81
82
83
84
85
86
87
88
# File 'lib/gema/ListaDobleEnlazada.rb', line 81

def each
	nodo = @head
	loop do
		yield nodo.value
		nodo = nodo.next
		break if(nodo == nil)
	end
end

#extract_headObject

Retorna la cabeza de la lista del objeto ListaDobleEnlazada y la elimina de esta.



58
59
60
61
62
63
64
# File 'lib/gema/ListaDobleEnlazada.rb', line 58

def extract_head()
	nodo = @head
	@head = @head.next
	@head.prev = nil
	extracted(nodo)
	return nodo
end

#extract_tailObject

Retorna la cola de la lista del objeto ListaDobleEnlazada y la elimina de esta.



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

def extract_tail()
	nodo = @tail
	@tail = @tail.prev
	@tail.next = nil
	extracted(nodo)
	return nodo
end

#extracted(nodo) ⇒ Object

Placeholder de metodo-evento para ser sobreescrito en clases hijas Este metodo se llama cada vez que un elemento es extraido con exito param [Object] nodo Elemento extraido



69
70
# File 'lib/gema/ListaDobleEnlazada.rb', line 69

def extracted(nodo)
end

#insert(nodo) ⇒ Object

Inserta un elemento en la lista del objeto listaDobleEnlazada

Parameters:

  • nodo (Object)

    Elemento a insertar



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/gema/ListaDobleEnlazada.rb', line 24

def insert(nodo)
	@size = @size + 1
	if !(nodo.instance_of? Node) then
		nodo = Node.new(nodo,nil,nil)
	end
	if (@head == nil) then
		@head = nodo
	end
	if(@tail == nil) then
		@tail = nodo
	else
		@tail.next = nodo
		nodo.prev = @tail
		@tail = nodo
	end
	inserted(nodo)
end

#inserted(nodo) ⇒ Object

PlaceHolder de metodo-evento para ser sobreescrito en clases hijas Este metodo se llama cada vez que un elemento es insertado con exito

Parameters:

  • nodo (Object)

    Elemento insertado



45
46
# File 'lib/gema/ListaDobleEnlazada.rb', line 45

def inserted(nodo)
end

#insertList(*nodos) ⇒ Object

Metodo usado para insertar una lista de elementos en el objeto listaDobleEnlazada

Parameters:

  • nodos (List)

    Lista de elementos a insertar



16
17
18
19
20
# File 'lib/gema/ListaDobleEnlazada.rb', line 16

def insertList(*nodos)
	nodos.each do |nodo|
		self.insert(nodo)
	end
end

#to_sObject



72
73
74
75
76
77
# File 'lib/gema/ListaDobleEnlazada.rb', line 72

def to_s()
	result = ""
	self.each{|value| result += "-> " + value.to_s() + " <" }
	result += '-'
	return result
end