class List

Clase que define una lista doblemente enlazada formada por elementos {ListNode}

@attr_reader head [ListNode] “puntero” al inicio de la lista @attr_reader tail [ListNode] “puntero” al final de la lista

Attributes

head[R]
tail[R]

Public Class Methods

new(nodo) click to toggle source
# File lib/simpleselect/list.rb, line 10
def initialize(nodo)
    raise unless nodo.is_a? (ListNode)
    @head = nodo
    @tail = nodo
end

Public Instance Methods

[](i) click to toggle source
# File lib/simpleselect/list.rb, line 78
def [] (i)
    headToTail[i]
end
each() { |i| ... } click to toggle source
# File lib/simpleselect/list.rb, line 75
def each 
    headToTail.each{|i| yield i}
end
headToTail() click to toggle source

Realiza un recorrido desde {List::head} hasta {List::tail}

@return [Array(ListNode)] Array que contiene todos los {ListNode} de la cadena desde el inicio al final

# File lib/simpleselect/list.rb, line 57
def headToTail()
    val=[@head]
    nodo=@head
    while (nodo.next!=nil)do
        nodo=nodo.next
        val.push(nodo)
    end
    val
end
invertir() click to toggle source
# File lib/simpleselect/list.rb, line 81
def invertir 
    val = []
    self.each {|i| val.unshift(i)}
    val
end
multiple_push(nodos) click to toggle source

Inserta multiples elementos al final de la lista

@param nodos [Array(ListNode)] “puntero” al inicio de la lista

# File lib/simpleselect/list.rb, line 29
def multiple_push (nodos)
    nodos.each { |i|
        raise unless i.is_a? (ListNode)
        push(i)
    }
end
pop() click to toggle source

Extrae un elemento del final de la lista

@return [Object] valor contenido en el ultimo {ListNode} de la lista

# File lib/simpleselect/list.rb, line 38
def pop 
    aux = @head.value
    @head = @head.next
    @head.prev = nil
    aux
end
push(nodo) click to toggle source

Inserta elementos al final de la lista

@param nodo [ListNode] “puntero” al inicio de la lista

# File lib/simpleselect/list.rb, line 18
def push (nodo)
    raise unless nodo.is_a? (ListNode)
    nodo.prev=@tail
    @tail.next=nodo
    @tail=nodo
    
end
tailToHead() click to toggle source
# File lib/simpleselect/list.rb, line 66
def tailToHead()
    val=[@tail]
    nodo=@tail
    while (nodo.prev != nil)do
        nodo=nodo.prev
        val.push(nodo)
    end
    val
end
vacia?() click to toggle source

Comprueba si la lista se encuentra vacia

@return [Boolean] devuelve true en caso de que esté vacia y false en el contrario

# File lib/simpleselect/list.rb, line 47
def vacia?
    a = false
    if (@head == nil)
        a = true
    end 
    a
end