Class: Linkedlist::Lista
- Inherits:
-
Object
- Object
- Linkedlist::Lista
- Defined in:
- lib/linkedlist/linkedlist.rb
Overview
Clase Lista
Direct Known Subclasses
Instance Attribute Summary collapse
-
#longitud ⇒ Object
readonly
Returns the value of attribute longitud.
-
#primero ⇒ Object
Returns the value of attribute primero.
Instance Method Summary collapse
-
#initialize ⇒ Lista
constructor
A new instance of Lista.
-
#pop ⇒ Object
Elimina el último elemento de la lista y devuelve el valor (value) de dicho elemento.
-
#push(value) ⇒ Object
Añade un valor al final de la lista Devuelve ‘self’ es decir, el objeto tipo Lista que llama a ‘push’.
-
#push_array(*items) ⇒ Object
Añade un conjunto de valores a la lista, pasado por array y devuelve al objeto llamante, de la clase Lista.
-
#push_referencia(obj) ⇒ Object
Métodos push y pop para objetos de tipo Referencia.
-
#shift ⇒ Object
Elimina el primer elemento de la lista y devuelve su valor.
-
#unshift(value) ⇒ Object
Añade un nodo al principio de la lista y devuelve al objeto llamante, de la clase Lista.
Constructor Details
Instance Attribute Details
#longitud ⇒ Object (readonly)
Returns the value of attribute longitud.
8 9 10 |
# File 'lib/linkedlist/linkedlist.rb', line 8 def longitud @longitud end |
#primero ⇒ Object
Returns the value of attribute primero.
7 8 9 |
# File 'lib/linkedlist/linkedlist.rb', line 7 def primero @primero end |
Instance Method Details
#pop ⇒ Object
Elimina el último elemento de la lista y devuelve el valor (value) de dicho elemento
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/linkedlist/linkedlist.rb', line 28 def pop fail 'Lista vacia' if @longitud < 1 nodo_actual = @primero done = false until done if nodo_actual.sig.sig.nil? done = true else nodo_actual = nodo_actual.sig end end to_return = nodo_actual.sig.val nodo_actual.sig = nil @longitud -= 1 to_return end |
#push(value) ⇒ Object
Añade un valor al final de la lista Devuelve ‘self’ es decir, el objeto tipo Lista que llama a ‘push’
17 18 19 20 21 22 23 24 |
# File 'lib/linkedlist/linkedlist.rb', line 17 def push(value) node = Node::Nodo.new(value) nodo_actual = @primero nodo_actual = nodo_actual.sig until nodo_actual.sig.nil? nodo_actual.sig = node @longitud += 1 self end |
#push_array(*items) ⇒ Object
Añade un conjunto de valores a la lista, pasado por array y devuelve al objeto llamante, de la clase Lista
66 67 68 69 70 |
# File 'lib/linkedlist/linkedlist.rb', line 66 def push_array(*items) @longitud = items.length @primero = Node::Nodo.new(items.shift) items.each { |item| push(item) } end |
#push_referencia(obj) ⇒ Object
Métodos push y pop para objetos de tipo Referencia
73 74 75 76 77 78 79 80 |
# File 'lib/linkedlist/linkedlist.rb', line 73 def push_referencia(obj) node = Node::Nodo.new(obj) nodo_actual = @primero nodo_actual = nodo_actual.sig until nodo_actual.sig.nil? nodo_actual.sig = node @longitud += 1 self end |
#shift ⇒ Object
Elimina el primer elemento de la lista y devuelve su valor
47 48 49 50 51 52 53 |
# File 'lib/linkedlist/linkedlist.rb', line 47 def shift fail 'Lista vacia' if @longitud < 1 to_return = @primero.sig.val @primero.sig = @primero.sig.sig @longitud -= 1 to_return end |