class Lista
Clase Lista
la cual contiene una Lista
Doblemente Enlazada¶ ↑
Funciones¶ ↑
-
+initialize()+ - Inicializamos el @top y el @fin de la lista
-
+each()+ - Para recorrer cada nodo de la lista
-
+insert_beggining()+ - Insertamos un nodo en el inicio de la lista
-
+insert_end()+ - Insertamos un nodo en el fin de la lista
-
+extract_beggining()+ - Extraemos un nodo del inicio de la lista
-
+extract_end()+ - Extraemos un nodo del fin de la lista
-
+many_insertions_in_beggining()+ - Insertamos vector de nodos en el inicio de la lista
-
+many_insertions_in_end()+ - Insertamos vector de nodos en el fin de la lista
Attributes
Public Class Methods
Funcion que actua como constructor de la clase inicializando @top y @fin a nil ya que la lista esta vacia
==== Atributos * +@top+ - Inicio de la lista * +@fin+ - Fin de la lista
# File lib/dieta/lista.rb, line 35 def initialize() @top = nil @fin = nil end
Public Instance Methods
Funcion que sirve para recorrer los elementos de la lista
==== Atributos * +@aux+ - Estara inicializado al @top de la lista
# File lib/dieta/lista.rb, line 44 def each aux = @top while aux!=nil yield aux.value aux = aux.next end end
Funcion que sirve para realizar extracciones de elementos del inicio de la lista Si la lista esta vacia, no se podra sacar nada Si la lista no esta vacia sacamos el elemento y arrastramos hacia la derecha
==== Atributos * +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 106 def extract_beggining() if(@top == nil) return nil elsif helper = @top @top = @top.next return helper.value end end
Funcion que sirve para realizar extracciones de elementos del final de la lista Si la lista esta vacia, no se podra sacar nada Si la lista no esta vacia sacamos el elemento y arrastramos hacia la izquierda
==== Atributos * +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 121 def extract_end() if(@top == nil) return nil elsif helper = @fin @fin = @fin.prev return helper.value end end
Funcion que sirve para realizar inserciones de nodos en el inicio de la lista Si la lista esta vacia, top y fin seran iguales Si la lista no esta vacia arrastramos los elementos hacia la derechae insertamos
==== Atributos * +valor+ - Valor del nodo a insertar * +element+ - Nodo a insertar * +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 60 def insert_beggining (valor) element = Node.new(valor, nil, nil) if(@top == nil) @top = element @fin = element @top.next = nil @top.prev = nil elsif helper = @top @top = element @top.next = helper helper.prev = @top end end
Funcion que sirve para realizar inserciones de nodos en el final de la lista Si la lista esta vacia, top y fin seran iguales Si la lista no esta vacia arrastramos los elementos hacia la izquierda e insertamos
==== Atributos * +valor+ - Valor del nodo a insertar * +element+ - Nodo a insertar * +helper+ - Elemento auxiliar para insertar elementos en el inicio
# File lib/dieta/lista.rb, line 83 def insert_end (valor) element = Node.new(valor, nil, nil) if(@top==nil) @top = element @fin = element @top.next = nil @top.prev = nil @fin.next = nil @fin.prev = nil elsif helper = @fin @fin = element @fin.prev = helper helper.next = @fin @fin.next = nil end end
Funcion que sirve para realizar una insercion de un vector de elements en la lista Para ello, recorremos los elementos del vector y llamamos a la funcion de insercion en el inicio de forma recursiva
==== Atributos * +elements+ - Vector de elementos a insertar en la lista
# File lib/dieta/lista.rb, line 136 def many_insertions_in_beggining (elements) i=0 while i <= (elements.length-1) do self.insert_beggining(elements[i]) i += 1 end end
Funcion que sirve para realizar una insercion de un vector de elements en la lista Para ello, recorremos los elementos del vector y llamamos a la funcion de insercion en el final de forma recursiva
==== Atributos * +elements+ - Vector de elementos a insertar en la lista
# File lib/dieta/lista.rb, line 149 def many_insertions_in_end (elements) i=0 while i <= (elements.length-1) do self.insert_end(elements[i]) i += 1 end end