def test_delete_first_element(self): """ -- Elimina el primer elemento de una lista y verificar que la lista contenga los elementos restantes """ L=LinkedList() insert(L,"hola",0) insert(L,"soy",1) insert(L,"harpo",2) insert(L,"vos?",3) delete(L,"hola") self.assertEqual([L.head.value, L.head.nextNode.value, L.head.nextNode.nextNode.value, ],["soy","harpo","vos?"])
def test_delete_elements(self): """ -- Elimina varios elementos de una lista y verificar que la lista contenga los elementos restantes """ L=LinkedList() insert(L,"hola",0) insert(L,"soy",1) insert(L,"harpo",2) insert(L,"uds",2) insert(L,"quienes",1) delete(L,"quienes") delete(L,"uds") self.assertEqual([L.head.value, L.head.nextNode.value, L.head.nextNode.nextNode.value, ],["hola","soy","harpo"])
def delMax(BH): """ Recupera el mayor elemento del heap. Este siempre se encontrara al comienzo (posicion 1). Para manter la esctrucura del arbol binario se reemplaza el nodo raiz por el ultimo nodo. Luego mediante la funcion shiftDown se va recorriendo el arbol hasta encontrar la posicion correcta de dicho nodo. De esta manara se garantiza la propiedad heap. """ retval = linkedlist.access(BH.bheaplist, 1) ultimo = linkedlist.access(BH.bheaplist, length(BH)) linkedlist.delete(BH.bheaplist, ultimo) linkedlist.update(BH.bheaplist, ultimo, 1) shiftDown(BH, 1) return retval
def heapsort(L): BH = Bheap() listaInterna = linkedlist.LinkedList() #copiar valores for i in range(linkedlist.length(L) - 1, -1, -1): linkedlist.add(listaInterna, linkedlist.access(L, i)) heapify(BH, listaInterna) for i in range(length(BH)): if length(BH) == 1: primero = linkedlist.access(BH.bheaplist, 1) linkedlist.add(listaInterna, primero) else: shiftDown(BH, 1) # intercambia el primero con el ultimo primero = linkedlist.access(BH.bheaplist, 1) ultimo = linkedlist.access(BH.bheaplist, length(BH)) linkedlist.update(BH.bheaplist, primero, length(BH)) linkedlist.update(BH.bheaplist, ultimo, 1) # se coloco esta liena para que sea mas facil leer el codigo ultimo = primero # se agrega el primero a listaInterna y se elimina el ultimo elemento # del Bheap linkedlist.add(listaInterna, ultimo) linkedlist.delete(BH.bheaplist, ultimo) # actualizar valores for i in range(linkedlist.length(L)): linkedlist.update(L, linkedlist.access(listaInterna, i), i) # URL : https://repl.it/@BrunoFuentes/Binary-Heaps-y-HeapSort
def test_delete_element_from_empty_list(self): """ -- Elimina elemento de una lista vaciat y verificar que delete() devuelva None """ L = LinkedList() res = delete(L, "hola") self.assertEqual(res, None)