class Dll

Clase lista doblemente enlazada @author alu0100880625 @attr_reader [Node] head struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al inicio @attr_reader [Node] tail struct que almacena el nodo anterior (:prev), el dato del actual (:value) y el nodo siguiente (:next) al final

Constants

Node

Attributes

head[R]
tail[R]

Public Class Methods

new() click to toggle source

Método que instancia un objeto de la clase (una lista vacia con head y tail inicializados a nil)

# File lib/dieta/dll.rb, line 10
def initialize
        @head=nil
        @tail=nil
end

Public Instance Methods

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

Método necesario para el módulo Enumerable

# File lib/dieta/dll.rb, line 65
def each
        aux=@head
        while(aux!=nil)
                yield aux[:data]
                aux=aux[:next]
        end
end
extract_back() click to toggle source

Método que extrae un dato de la lista por el final @return [Data] dato extraido

# File lib/dieta/dll.rb, line 54
def extract_back
        aux=@tail[:data]
        @tail=@tail[:prev]
        if(@ŧail==nil)
                @head=nil
        else
                @tail[:prev]=nil
        end
        aux
end
extract_front() click to toggle source

Método que extrae un dato de la lista por el inicio @return [Data] dato extraido

# File lib/dieta/dll.rb, line 42
def extract_front
        aux=@head[:data]
        @head=@head[:next]
        if(@head==nil)
                @tail=nil
        else
                @head[:prev]=nil
        end
        aux
end
insert_back(data) click to toggle source

Método que crea un nodo que contenga el dato y lo inserta en la lista por el final @param [Data] data dato que se desea insertar

# File lib/dieta/dll.rb, line 29
def insert_back(data)
        if(@tail==nil)
                aux=Node.new(nil,data,nil)
                @tail=aux
                @head=aux
        else
                aux=Node.new(@tail,data,nil)
                @tail[:next]=aux
                @tail=aux
        end
end
insert_front(data) click to toggle source

Método que crea un nodo que contenga el dato y lo inserta en la lista por el inicio @param [Data] data dato que se desea insertar

# File lib/dieta/dll.rb, line 16
def insert_front(data)
        if(@head==nil)
                aux=Node.new(nil,data,nil)
                @head=aux
                @tail=aux
        else
                aux=Node.new(nil,data,@head)
                @head[:prev]=aux
                @head=aux
        end
end