Class: List

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/simpleselect/list.rb

Overview

Clase que define una lista doblemente enlazada formada por elementos ListNode

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nodo) ⇒ List

Returns a new instance of List.



10
11
12
13
14
# File 'lib/simpleselect/list.rb', line 10

def initialize(nodo)
    raise unless nodo.is_a? (ListNode)
    @head = nodo
    @tail = nodo
end

Instance Attribute Details

#headListNode (readonly)

“puntero” al inicio de la lista

Returns:

  • (ListNode)

    the current value of head



6
7
8
# File 'lib/simpleselect/list.rb', line 6

def head
  @head
end

#tailListNode (readonly)

“puntero” al final de la lista

Returns:

  • (ListNode)

    the current value of tail



6
7
8
# File 'lib/simpleselect/list.rb', line 6

def tail
  @tail
end

Instance Method Details

#[](i) ⇒ Object



78
79
80
# File 'lib/simpleselect/list.rb', line 78

def [] (i)
    headToTail[i]
end

#eachObject



75
76
77
# File 'lib/simpleselect/list.rb', line 75

def each 
    headToTail.each{|i| yield i}
end

#headToTailArray(ListNode)

Realiza un recorrido desde head hasta tail

Returns:

  • (Array(ListNode))

    Array que contiene todos los ListNode de la cadena desde el inicio al final



57
58
59
60
61
62
63
64
65
# 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

#invertirObject



81
82
83
84
85
# File 'lib/simpleselect/list.rb', line 81

def invertir 
    val = []
    self.each {|i| val.unshift(i)}
    val
end

#multiple_push(nodos) ⇒ Object

Inserta multiples elementos al final de la lista

Parameters:

  • nodos (Array(ListNode))

    “puntero” al inicio de la lista



29
30
31
32
33
34
# File 'lib/simpleselect/list.rb', line 29

def multiple_push (nodos)
    nodos.each { |i|
        raise unless i.is_a? (ListNode)
        push(i)
    }
end

#popObject

Extrae un elemento del final de la lista

Returns:

  • (Object)

    valor contenido en el ultimo ListNode de la lista



38
39
40
41
42
43
# File 'lib/simpleselect/list.rb', line 38

def pop 
    aux = @head.value
    @head = @head.next
    @head.prev = nil
    aux
end

#push(nodo) ⇒ Object

Inserta elementos al final de la lista

Parameters:

  • nodo (ListNode)

    “puntero” al inicio de la lista



18
19
20
21
22
23
24
# 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

#tailToHeadObject



66
67
68
69
70
71
72
73
74
# 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?Boolean

Comprueba si la lista se encuentra vacia

Returns:

  • (Boolean)

    devuelve true en caso de que esté vacia y false en el contrario



47
48
49
50
51
52
53
# File 'lib/simpleselect/list.rb', line 47

def vacia?
    a = false
    if (@head == nil)
        a = true
    end 
    a
end