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