Class: Doublylinkedlist::Doublylinkedlist
- Inherits:
-
Object
- Object
- Doublylinkedlist::Doublylinkedlist
- Includes:
- Enumerable
- Defined in:
- lib/doublylinkedlist/doublylinkedlist.rb
Overview
En esta clase creamos nuestra propia lista doblemente enlazada
Instance Method Summary (collapse)
-
- (Object) each(&block)
Método para que la lista sea enumerable.
-
- (Object) extraer_final
Metodo que nos permite extraer algo al final de la lista.
-
- (Object) extraer_inicio
Metodo que nos permite extraer algo al inicio de la lista.
-
- (Doublylinkedlist) initialize
constructor
Iniciar los punteros de la lista, inicio y final.
-
- (Object) insertar_final(val)
Metodo que nos permite insertar algo al final de la lista.
-
- (Object) insertar_inicio(val)
Metodo que nos permite insertar algo al inicio de la lista.
-
- (Object) ordenar!
Metodo que nos ordenada la lista segun los criterios de la APA.
-
- (Object) posicion(pos)
Metodo que devuelve lo contenido en una posicion de la lista.
-
- (Object) tamano
Metodo que nos devuelve la cantidad de elementos en la lista.
-
- (Object) to_s
Metodo para imprimir la lista con formato.
Constructor Details
- (Doublylinkedlist) initialize
Iniciar los punteros de la lista, inicio y final
8 9 10 11 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 8 def initialize() @inicio = nil @final = nil end |
Instance Method Details
- (Object) each(&block)
Método para que la lista sea enumerable
135 136 137 138 139 140 141 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 135 def each (&block) copia = @inicio while !copia.nil? block.call(copia[:valor]) copia = copia[:sig] end end |
- (Object) extraer_final
Metodo que nos permite extraer algo al final de la lista
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 77 def extraer_final() if !@inicio.nil? if @inicio[:sig].nil? && @final[:sig].nil? @inicio = nil @final = nil else @final = @final[:ant] @final[:sig] = nil end else raise RuntimeError, "La lista esta vacia" end end |
- (Object) extraer_inicio
Metodo que nos permite extraer algo al inicio de la lista
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 58 def extraer_inicio() if !@inicio.nil? if @inicio[:sig].nil? && @final[:sig].nil? @inicio = nil @final = nil else @inicio = @inicio[:sig] @inicio[:ant] = nil end else raise RuntimeError, "La lista esta vacia" end end |
- (Object) insertar_final(val)
Metodo que nos permite insertar algo al final de la lista
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 45 def insertar_final(val) if @final.nil? @inicio = Struct::Nodo.new(nil, val, nil) @final = @inicio else copia = @final @final[:sig] = Struct::Nodo.new(copia, val, nil) copia2 = @final[:sig] @final = copia2 end end |
- (Object) insertar_inicio(val)
Metodo que nos permite insertar algo al inicio de la lista
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 32 def insertar_inicio(val) if @inicio.nil? @inicio = Struct::Nodo.new(nil, val, nil) @final = @inicio else copia = @inicio @inicio = Struct::Nodo.new(nil, val, copia) copia[:ant] = @inicio end end |
- (Object) ordenar!
Metodo que nos ordenada la lista segun los criterios de la APA
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 144 def ordenar! cambio = true while cambio cambio = false i = @inicio i_1 = @inicio[:sig] while i_1 != nil if(i[:valor] > i_1[:valor]) i[:valor], i_1[:valor] = i_1[:valor], i[:valor] cambio = true end i = i_1 i_1 = i_1[:sig] end end end |
- (Object) posicion(pos)
Metodo que devuelve lo contenido en una posicion de la lista
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 114 def posicion (pos) if @inicio.nil? raise RuntimeError, "La lista esta vacia" end if pos<0 || pos>tamano-1 raise RuntimeError, "La posicion no es correcta" end contador=0 copia=@inicio while contador<pos && !copia.nil? copia2 = copia[:sig] copia = copia2 contador += 1 end return copia[:valor] end |
- (Object) tamano
Metodo que nos devuelve la cantidad de elementos en la lista
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 97 def tamano() if !@inicio.nil? contador = 1 copia = @inicio while !copia[:sig].nil? contador += 1 copia2 = copia[:sig] copia = copia2 end end return contador end |
- (Object) to_s
Metodo para imprimir la lista con formato
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/doublylinkedlist/doublylinkedlist.rb', line 14 def to_s actual = @inicio cadena = "|" while !actual.nil? cadena << actual[:valor].to_s if !actual[:sig].nil? cadena << ", " end actual = actual[:sig] end cadena << "|" return cadena end |