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
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
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: ')
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
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)