class Lista
Attributes
contador[RW]
head[RW]
tail[RW]
Public Class Methods
new()
click to toggle source
# File lib/prct11/lista.rb, line 8 def initialize @head = Nodo.new(nil,nil,nil) #inicio de la lista @tail = Nodo.new(nil,nil,nil) #fin de la lista @contador=0 #variable que determina el tamaño actual de la lista end
Public Instance Methods
each() { |value| ... }
click to toggle source
# File lib/prct11/lista.rb, line 98 def each actual = @tail while actual != nil yield actual.value actual = actual.siguiente end end
empty()
click to toggle source
# File lib/prct11/lista.rb, line 107 def empty return contador==0 end
extract_head()
click to toggle source
# File lib/prct11/lista.rb, line 45 def extract_head aux = @head @head = @head[:previo] if @head != nil #Si head no es nil ponemos el siguiente de head como nil para desenlazar la lista @head[:siguiente] = nil else #Si el elemento que se extrae es el unico de la lista entonces ponemos todo a nil como en initialize @tail = nil end @contador = @contador - 1 return aux.value end
extract_tail()
click to toggle source
# File lib/prct11/lista.rb, line 60 def extract_tail if @contador == 1 return extract_head else actual = @tail @tail = @tail[:siguiente] if @tail != nil @tail[:previo] = nil end @contador = @contador - 1 return actual.value end end
insert_head(nodo)
click to toggle source
# File lib/prct11/lista.rb, line 15 def insert_head(nodo) if empty == true #Si la lista esta vacia insertamos el elemento en la lista vacia nodo[:previo] = @tail nodo[:siguiente] = @head @head = nodo @tail = nodo else #Si no esta vacia insertamos por el head nodo[:previo] = @head nodo[:siguiente] = nil @head[:siguiente] = nodo @head = nodo end @contador = @contador + 1 #Aumentamos variable que indica tamaño de la lista end
insert_tail(nodo)
click to toggle source
# File lib/prct11/lista.rb, line 32 def insert_tail(nodo) if empty #Si esta vacia insertamos en lista vacia insert_head(nodo) else #Si no insertamos por el tail nodo[:siguiente] = @tail nodo[:previo] = nil @tail[:previo] = nodo @tail = nodo @contador = @contador + 1 end end
insert_varios(nodos)
click to toggle source
# File lib/prct11/lista.rb, line 76 def insert_varios (nodos) for i in 0..(nodos.length - 1) insert_head(nodos[i]) end end
to_s()
click to toggle source
# File lib/prct11/lista.rb, line 83 def to_s aux = @tail if empty != true string= "\n****** MENU DIETETICO ******" while aux.siguiente != nil string+= "\n\n#{aux.value}" aux = aux.siguiente end string += "\n\n#{aux.value}" return string else return "Lista vacia" end end