Exemple #1
0
    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?"])
Exemple #2
0
    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"])
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
 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)