Ejemplo n.º 1
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.
    Es necesario proveer una función de comparación para las llaves.
    """
    hash = hashValue (map, key)                               # Se obtiene el hascode de la llave 
    entry = me.newMapEntry (key,value)                  
    pos = findSlot (map, key, hash, map['comparefunction'])    # Se encuentra la posición correspondiente a hash
    lt.changeInfo (map['table'], abs(pos), entry)              # Se reemplaza el valor anterior (puede ser None) con el nuevo valor
    map['size'] += 1
Ejemplo n.º 2
0
def remove(map, key, comparefunction):
    """
    Elimina la pareja llave,valor, donde llave == key.
    Es necesario proveer la función de comparación entre llaves 
    """
    hash = hashValue(map, key)
    pos = findSlot(map, key, hash, comparefunction)
    if pos > 0:
        entry = me.newMapEntry('__EMPTY__', '__EMPTY__')
        lt.changeInfo(map['table'], pos, entry)
        map['size'] -= 1
Ejemplo n.º 3
0
def changeInfo(lst, pos, element):
    """ Cambia la informacion contenida en el nodo de la lista que se encuentra en la posicion pos.
    
    Args:   
        lst: La lista a examinar
        pos: la posición de la lista con la información a cambiar
        newinfo: La nueva información que se debe poner en el nodo de la posición pos

    Raises:
        Exception
    """
    try:
        lt.changeInfo(lst, pos, element)
    except Exception as exp:
        error.reraise(exp, 'List->changeInfo: ')
Ejemplo n.º 4
0
def put(map, key, value, comparefunction):
    """
    Ingresa una pareja llave,valor a la tabla de hash.  Si la llave ya existe en la tabla, se reemplaza el valor.
    Es necesario proveer una función de comparación para las llaves.
    """
    hash = hashValue(map, key)
    bucket = lt.getElement(
        map['table'], hash
    )  #Se obtiene la lista de elementos en la posicion  hash de la tabla
    entry = me.newMapEntry(key, value)
    pos = lt.isPresent(bucket, key, comparefunction)
    if pos > 0:  #La pareja ya exista, se reemplaza el valor con la nueva información
        lt.changeInfo(bucket, pos, entry)
    else:
        lt.addLast(bucket,
                   entry)  #La llave no existia, se crea una nueva entrada
        map['size'] += 1
Ejemplo n.º 5
0
def changeInfo(lst, pos, element):
    """
    Reemplaza la información de la lista en la posicion pos, con el elemento element
    """
    lt.changeInfo(lst, pos, element)