Class: List
Overview
Una lista de nodos doblemente enlazada
Instance Attribute Summary collapse
-
#head ⇒ Object
Returns the value of attribute head.
-
#size ⇒ Object
Returns the value of attribute size.
-
#tail ⇒ Object
Returns the value of attribute tail.
Instance Method Summary collapse
- #[](i) ⇒ Object
-
#each ⇒ Object
Método each.
-
#empty ⇒ Object
Devuelve vacío si la lista está vacía.
-
#initialize ⇒ List
constructor
Constructor de la clase Lista.
-
#insert(item) ⇒ Object
Inserta un elemento por la cabeza.
-
#insert_many(array) ⇒ Object
Inserta un vector de elementos.
-
#pop_head ⇒ Object
Elimina el elemento de la cabeza.
-
#pop_tail ⇒ Object
Elimina el elemento de la cola.
-
#push(item) ⇒ Object
Inserta un alimento por la cola.
- #to_s ⇒ Object
Constructor Details
#initialize ⇒ List
Constructor de la clase Lista
10 11 12 13 14 |
# File 'lib/p6/list.rb', line 10 def initialize() @size = 0 @head = nil @tail = nil end |
Instance Attribute Details
#head ⇒ Object
Returns the value of attribute head.
7 8 9 |
# File 'lib/p6/list.rb', line 7 def head @head end |
#size ⇒ Object
Returns the value of attribute size.
7 8 9 |
# File 'lib/p6/list.rb', line 7 def size @size end |
#tail ⇒ Object
Returns the value of attribute tail.
7 8 9 |
# File 'lib/p6/list.rb', line 7 def tail @tail end |
Instance Method Details
#[](i) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/p6/list.rb', line 108 def [](i) if i.is_a?Integer if i == 0 return @head.value elsif i == (@size - 1) return @tail.value elsif i < @size - 1 && i > 0 puntero = @head i.times{puntero = puntero.next} return puntero.value else return nil end end end |
#each ⇒ Object
Método each
100 101 102 103 104 105 106 |
# File 'lib/p6/list.rb', line 100 def each puntero = @head while(puntero != nil) yield puntero.value puntero = puntero.next end end |
#empty ⇒ Object
Devuelve vacío si la lista está vacía
91 92 93 94 95 96 97 |
# File 'lib/p6/list.rb', line 91 def empty() if(@size == 0) return true else return false end end |
#insert(item) ⇒ Object
Inserta un elemento por la cabeza
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/p6/list.rb', line 33 def insert(item) item = Node.new(item, nil, nil) if(empty) @head = item item.prev = nil else @tail.next = item item.prev = @tail end @tail = item item.next = nil @size += 1 end |
#insert_many(array) ⇒ Object
Inserta un vector de elementos
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/p6/list.rb', line 49 def insert_many(array) array.each do |item| item = Node.new(item,nil,nil) if(empty) @head = item item.prev = nil else @tail.next = item item.prev = @tail end @tail = item item.next = nil @size += 1 end end |
#pop_head ⇒ Object
Elimina el elemento de la cabeza
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/p6/list.rb', line 67 def pop_head() if(empty) puts "Lista vacía" else aux = @head @head.next.prev = nil @head = @head.next @size -= 1 end end |
#pop_tail ⇒ Object
Elimina el elemento de la cola
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/p6/list.rb', line 79 def pop_tail() if(empty) puts "Lista vacía" else aux = @tail @tail.prev.next = nil @tail = @tail.prev @size -= 1 end end |
#push(item) ⇒ Object
Inserta un alimento por la cola
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/p6/list.rb', line 17 def push(item) item = Node.new(item, nil, nil) if(empty) @tail = item item.next = nil else head.prev = item item.next = @head end @head = item item.prev = nil @size += 1 end |
#to_s ⇒ Object
124 125 126 127 128 129 130 131 132 |
# File 'lib/p6/list.rb', line 124 def to_s nodo = @head cadena ="" while (nodo != nil) cadena =cadena + nodo.value.to_s nodo = nodo.next end return cadena end |