class Lista
Clase lista doblemente enlazada.
Attributes
head[RW]
Nodo del principio de la lista.
tail[RW]
Nodo del final de la lista.
Public Class Methods
new()
click to toggle source
Metodo que inicializa los objetos de tipo Lista
.
# File lib/prct06/lista.rb, line 13 def initialize @head = @tail = nil end
Public Instance Methods
each() { |aux| ... }
click to toggle source
Metodo necesario para el uso del modulo Enumerable.
# File lib/prct06/lista.rb, line 96 def each aux=@head while(aux!=nil) yield aux[:value] aux=aux[:next] end end
is_empty()
click to toggle source
Metodo que devuelve true si la lista esta vacia.
# File lib/prct06/lista.rb, line 18 def is_empty if @head==nil && @tail==nil return true else return false end end
pop()
click to toggle source
Metodo que saca un elemento de la lista por el principio.
# File lib/prct06/lista.rb, line 59 def pop if(!is_empty()) nodo = @head @head = @head.next return nodo.value else return nil end end
pop_tail()
click to toggle source
Metodo que saca un elemento de la lista por el final.
# File lib/prct06/lista.rb, line 72 def pop_tail if(@tail==nil) return false else nodo = @tail @tail = @tail.prev end return nodo.value end
push(v)
click to toggle source
Metodo que mete un elemento en la lista por el final.
# File lib/prct06/lista.rb, line 29 def push(v) nodo = Node.new(v,nil,nil) if (@head == nil) @head = nodo else @tail.next = nodo nodo.prev = @tail end @tail=nodo end
push_head(v)
click to toggle source
Metodo que mete un elemento en la lista por el principio.
# File lib/prct06/lista.rb, line 44 def push_head(v) nodo = Node.new(v,nil,nil) nodo.next = @head nodo.prev=nil if @tail==nil @final=nodo else @head.prev=nodo end @head = nodo end
to_s()
click to toggle source
Metodo que formatea la salida de la lista.
# File lib/prct06/lista.rb, line 83 def to_s aux=@head i=1 str="" while(aux!=nil) str+="#{i}) #{aux[:value]}\n" aux=aux[:next] i+=1 end str end