def isEmpty(map):
    """ Informa si la tabla de hash se encuentra vacia
    Args:
        map: El map
    Returns:
        True: El map esta vacio
        False: El map no esta vacio
    Raises:
        Exception
    """
    try:
        empty = True
        for pos in range(lt.size(map['table'])):

            entry = lt.getElement(map['table'], pos + 1)

            if (entry['key'] is not None and entry['key'] != '__EMPTY__'):
                empty = False
                break
        return empty
    except Exception as exp:
        error.reraise(exp, 'Probe:isEmpty')
Пример #2
0
def increaseKey(iheap, key, newindex):
    """
    Incrementa el indice de un llave

    Args:
        iheap: El heap a revisar
        key: la llave a incrementar
        newindex: El nuevo indice de la llave
    Returns:
       El numero de elementos
    Raises:
        Exception
    """
    try:
        val = map.get(iheap['qpMap'], key)
        elem = lt.getElement(iheap['elements'], val['value'])
        elem['index'] = newindex
        lt.changeInfo(iheap['elements'], val['value'], elem)
        sink(iheap, val['value'])
        return iheap
    except Exception as exp:
        error.reraise(exp, 'indexheap:increaseKey')
Пример #3
0
def put(map, key, value):
    """ Ingresa una pareja llave,valor a la tabla de hash.
    Si la llave ya existe en la tabla, se reemplaza el valor

    Args:
        map: El map a donde se guarda la pareja
        key: la llave asociada a la pareja
        value: el valor asociado a la pareja
    Returns:
        El map
    Raises:
        Exception
    """
    hash = hashValue(map, key)
    bucket = lt.getElement(map['table'], hash)
    entry = me.newMapEntry(key, value)
    pos = lt.isPresent(bucket, key)
    if pos > 0:  # La pareja ya exista, se reemplaza el valor
        lt.changeInfo(bucket, pos, entry)
    else:
        lt.addLast(bucket, entry)  # La llave no existia
        map['size'] += 1
    return map
Пример #4
0
def delMin(iheap):
    """
    Retorna el menor elemento del heap y lo elimina.
    Se reemplaza con el último elemento y se hace sink.

    Args:
        iheap: El heap a revisar
    Returns:
       La llave asociada al mayor indice
    Raises:
        Exception
    """
    try:
        if (iheap['size'] > 0):
            minIdx = lt.getElement(iheap['elements'], 1)
            exchange(iheap, 1, iheap['size'])
            iheap['size'] -= 1
            sink(iheap, 1)
            map.remove(iheap['qpMap'], minIdx['key'])
            return minIdx['key']
        return None
    except Exception as exp:
        error.reraise(exp, 'indexheap:delMin')