class Lista

Clase Lista la cual contiene una Lista Doblemente Enlazada

Funciones

Attributes

fin[RW]
top[RW]

Public Class Methods

new() click to toggle source

Funcion que actua como constructor de la clase inicializando @top y @fin a nil ya que la lista esta vacia

==== Atributos

* +@top+ - Inicio de la lista
* +@fin+ - Fin de la lista
# File lib/dieta/lista.rb, line 35
def initialize()
        @top = nil
        @fin = nil
end

Public Instance Methods

each() { |value| ... } click to toggle source

Funcion que sirve para recorrer los elementos de la lista

==== Atributos

* +@aux+ - Estara inicializado al @top de la lista
# File lib/dieta/lista.rb, line 44
def each
        aux = @top
        while aux!=nil 
                yield aux.value
                aux = aux.next
        end
end
extract_beggining() click to toggle source

Funcion que sirve para realizar extracciones de elementos del inicio de la lista Si la lista esta vacia, no se podra sacar nada Si la lista no esta vacia sacamos el elemento y arrastramos hacia la derecha

==== Atributos

* +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 106
def extract_beggining()
        if(@top == nil)
                return nil
        elsif 
                helper = @top
        @top = @top.next
        return helper.value
        end
end
extract_end() click to toggle source

Funcion que sirve para realizar extracciones de elementos del final de la lista Si la lista esta vacia, no se podra sacar nada Si la lista no esta vacia sacamos el elemento y arrastramos hacia la izquierda

==== Atributos

* +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 121
def extract_end()
        if(@top == nil)
                return nil
        elsif 
                helper = @fin
                @fin = @fin.prev
                return helper.value
        end
end
insert_beggining(valor) click to toggle source

Funcion que sirve para realizar inserciones de nodos en el inicio de la lista Si la lista esta vacia, top y fin seran iguales Si la lista no esta vacia arrastramos los elementos hacia la derechae insertamos

==== Atributos

* +valor+ - Valor del nodo a insertar
* +element+ - Nodo a insertar
* +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 60
def insert_beggining (valor)
        element = Node.new(valor, nil, nil)
        if(@top == nil)
                @top = element
                @fin = element
                @top.next = nil
                @top.prev = nil
        elsif
                helper = @top
                @top = element
                @top.next = helper
                helper.prev = @top
        end
end
insert_end(valor) click to toggle source

Funcion que sirve para realizar inserciones de nodos en el final de la lista Si la lista esta vacia, top y fin seran iguales Si la lista no esta vacia arrastramos los elementos hacia la izquierda e insertamos

==== Atributos

* +valor+ - Valor del nodo a insertar
* +element+ - Nodo a insertar
* +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 83
def insert_end (valor)
        element = Node.new(valor, nil, nil)
        if(@top==nil)
                @top = element
                @fin = element
                @top.next = nil
                @top.prev = nil
                @fin.next = nil
                @fin.prev = nil
        elsif 
                helper = @fin
                @fin = element
                @fin.prev = helper
                helper.next = @fin
                @fin.next = nil
        end
end
many_insertions_in_beggining(elements) click to toggle source

Funcion que sirve para realizar una insercion de un vector de elements en la lista Para ello, recorremos los elementos del vector y llamamos a la funcion de insercion en el inicio de forma recursiva

==== Atributos

* +elements+ - Vector de elementos a insertar en la lista
# File lib/dieta/lista.rb, line 136
def many_insertions_in_beggining (elements)
        i=0
        while i <= (elements.length-1) do
                self.insert_beggining(elements[i])
                i += 1
        end
end
many_insertions_in_end(elements) click to toggle source

Funcion que sirve para realizar una insercion de un vector de elements en la lista Para ello, recorremos los elementos del vector y llamamos a la funcion de insercion en el final de forma recursiva

==== Atributos

* +elements+ - Vector de elementos a insertar en la lista
# File lib/dieta/lista.rb, line 149
def many_insertions_in_end (elements)
        i=0
        while i <= (elements.length-1) do
                self.insert_end(elements[i])
                i += 1
        end
end