Class: List
Overview
Esta clase permite representar listas doblemente enlazadas. Su desarrollo ha sido dirigido por pruebas (TDD). Se han incluido el mixin Enumerable
- Author
-
Sergio Ferrera de Diego (sergioferrera1296@gmail.com)
- Copyright
-
Cretive Commons
- License
-
Distributes under the same terms as Ruby
Instance Attribute Summary collapse
-
#cabeza ⇒ Object
readonly
Returns the value of attribute cabeza.
-
#cola ⇒ Object
readonly
Returns the value of attribute cola.
-
#tam ⇒ Object
readonly
Returns the value of attribute tam.
Instance Method Summary collapse
-
#each {|temp = @cabeza| ... } ⇒ Object
Método para definir como recorrer los elementos de la lista.
-
#initialize ⇒ List
constructor
Método para asignar los datos de la lista.
-
#introducir_en_cabeza!(valor) ⇒ Object
Método para introducir un nuevo elemento en la cabeza de lista.
-
#introducir_en_cola!(valor) ⇒ Object
Método para introducir un nuevo elemento en la cola de lista.
-
#introducir_string!(valor) ⇒ Object
Método para introducir un varios nuevos elementos provenientes de una cadena de caracteres en la cabeza de lista.
-
#quitar_cabeza! ⇒ Object
Método para eliminar un elemento de la cabeza de lista.
-
#quitar_cola! ⇒ Object
Método para eliminar un elemento de la cola de lista.
-
#to_s ⇒ Object
Método para definir la forma en la que mostrar los datos de la lista.
Constructor Details
#initialize ⇒ List
Método para asignar los datos de la lista
21 22 23 24 25 26 27 |
# File 'lib/prct06/lista.rb', line 21 def initialize @cola=nil @cabeza=nil @tam=0 end |
Instance Attribute Details
#cabeza ⇒ Object (readonly)
Returns the value of attribute cabeza
14 15 16 |
# File 'lib/prct06/lista.rb', line 14 def cabeza @cabeza end |
#cola ⇒ Object (readonly)
Returns the value of attribute cola
14 15 16 |
# File 'lib/prct06/lista.rb', line 14 def cola @cola end |
#tam ⇒ Object (readonly)
Returns the value of attribute tam
14 15 16 |
# File 'lib/prct06/lista.rb', line 14 def tam @tam end |
Instance Method Details
#each {|temp = @cabeza| ... } ⇒ Object
Método para definir como recorrer los elementos de la lista
30 31 32 33 34 35 36 37 |
# File 'lib/prct06/lista.rb', line 30 def each yield temp = @cabeza if tam!=0 for i in (1 ..tam-1) yield temp = temp.prev end end end |
#introducir_en_cabeza!(valor) ⇒ Object
Método para introducir un nuevo elemento en la cabeza de lista
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/prct06/lista.rb', line 62 def introducir_en_cabeza!(valor) if(@tam==0) @cabeza=Node.new(valor,nil,nil) @cola= cabeza else @cabeza.next=Node.new(valor,cola,nil) @cabeza.next.prev= cabeza @cabeza= cabeza.next end @tam+=1 end |
#introducir_en_cola!(valor) ⇒ Object
Método para introducir un nuevo elemento en la cola de lista
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/prct06/lista.rb', line 42 def introducir_en_cola!(valor) if(@tam==0) @cola=Node.new(valor,nil,nil) @cabeza= cola else @cola.prev=Node.new(valor,cola,nil) @cola.prev.next= cola @cola= cola.prev end @tam+=1 end |
#introducir_string!(valor) ⇒ Object
Método para introducir un varios nuevos elementos provenientes de una cadena de caracteres en la cabeza de lista
133 134 135 136 137 138 139 |
# File 'lib/prct06/lista.rb', line 133 def introducir_string!(valor) for num in (0..valor.length-1) introducir_en_cabeza!(valor[num]) end end |
#quitar_cabeza! ⇒ Object
Método para eliminar un elemento de la cabeza de lista
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/prct06/lista.rb', line 101 def quitar_cabeza! temp=@cabeza if(tam>0) @cabeza= cabeza.prev if cabeza.nil? @cola=nil else @cabeza.next=nil end temp.next=nil temp.prev=nil @tam-=1 end temp end |
#quitar_cola! ⇒ Object
Método para eliminar un elemento de la cola de lista
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/prct06/lista.rb', line 80 def quitar_cola! temp=@cola if(tam>0) @cola= cola.next if cola.nil? @cabeza=nil else @cola.prev=nil end temp.next=nil temp.prev=nil @tam-=1 end temp end |
#to_s ⇒ Object
Método para definir la forma en la que mostrar los datos de la lista
122 123 124 125 126 127 128 |
# File 'lib/prct06/lista.rb', line 122 def to_s if(tam>0) "tamaño:#{tam} contenido:(#{cabeza.value} #{cola.value})" else "Sin valores almacenados." end end |