class List

Attributes

head[R]
tail[R]

Public Class Methods

new() click to toggle source

inicializamos la lista doblemente enlazada con un head y un tail

# File lib/practica6/practica7.rb, line 6
def initialize()
        @head=Node.new()
        @tail=@head
        
end

Public Instance Methods

add(other) click to toggle source

metodo que inserta un elemento al principio de la lista

# File lib/practica6/practica7.rb, line 26
def add(other)
        nuevo=Node.new(other,nil,nil)
        if(@head==nil)
                @head=nuevo
                @head.next=nil
                @head.prev=nil
                @tail=@head
        
        else
                nuevo.next=@head
                @head.prev=nuevo
                @head=nuevo 
        
        end
end
add_end(other) click to toggle source

metodo que inserta un elemento al final de la lista

# File lib/practica6/practica7.rb, line 48
def add_end(other)
        nuevo=Node.new(other,nil,nil)
        if(@head==@tail)
                if(@head==nil)
                        @tail=nuevo
                        @head=@tail
                else
                        @tail.next=nuevo
                        nuevo.prev=@tail
                        @tail=nuevo
                        @head.next=@tail
                end
        else
                @tail.next=nuevo
                nuevo.prev=@tail
                @tail=nuevo
        end
end
add_end_mult(other) click to toggle source

metodo que inserta varios elementos al final de la lista

# File lib/practica6/practica7.rb, line 85
def add_end_mult(other)
        for i in 0..other.length-1
                add_end(other[i])
        end
end
add_mult(other) click to toggle source

metodo que aƱade varios elementos al principio de la lista

# File lib/practica6/practica7.rb, line 42
def add_mult(other)
        for i in 0..other.length-1
                add(other[i])                
        end
end
each() { |value| ... } click to toggle source

metodo each que recorre cada nodo del vector para poder usar funciones de Enumerable

# File lib/practica6/practica7.rb, line 12
def each
        aux=@head
        while aux.next!=nil
                yield aux.value
                aux=aux.next
        end
end
get_first() click to toggle source

metodo que extrae el primer elemento de la lista

# File lib/practica6/practica7.rb, line 20
def get_first
        other=@head
                @head=@head.next
        other.value
end
get_last() click to toggle source

metodo que extrae el ultimo elemento de la lista

# File lib/practica6/practica7.rb, line 67
def get_last
        result=""
        if(@head==@tail)
                if(@head==nil)
                        result=nil
                else
                        result=@tail.value
                        @tail=nil
                        @head=nil
                end
        else
                result=@tail.value
                @tail=@tail.prev
                @tail.next=nil
        end
        result
end