in

diccionario – Estructura similar a un mapa en C: use int y struct para determinar un valor

apple touch icon@2

Probablemente tendrás que hacer tu propia estructura. El lenguaje de programación C de Kernighan y Ritchie tiene un ejemplo de cómo hacer un mapa asociado en c, y lo que detallaré a continuación se basa en lo que recuerdo de eso.

Básicamente necesitarás una estructura Mapa que contiene estructura Llave y estructura Valor.

struct Map {
    struct Key key;
    struct Value value;
};

estructura Llave contiene elementos que determinan el valor (en su caso 2 puntos y 2 pulgadas)

struct Key {
    struct point p1;
    struct point p2;
    int i;
    int j;
};

estructura Valor es lo que quieras que apunte tu clave (no dijiste)

Ahora tienes una estructura Mapa que asocia sus cuatro entradas con un valor, pero un solo mapa no es tan útil. Vas a querer una gran variedad de ellos.

struct Map map[SIZE_OF_MAP];

Si no desea buscar linealmente en la matriz el Mapa estructura que está buscando, puede crear una función hash que lo lleve directamente a ella. Simplemente defina una función que tome la clave y use su valor para asignarle un índice en la matriz. Usa el hash para colocar el Mapa en la matriz y recupérelo de la matriz. (Nota: no estoy seguro de si este es un ejemplo correcto de hash, corríjalo si es completamente incorrecto)

int get_hash(Key *key)
{
    int result;
    /* combine all inputs in some way */
    result = key->i * key->i + (key->p1.x * key->p1.x) - (key->p2.x * key->p2.x)
    /* make sure result isn't out of bounds of the array */
    return (result % SIZE_OF_MAP);
}

Si usa la función hash, tendrá que considerar las colisiones (qué sucede cuando dos teclas dan el mismo resultado para get_hash). Cuando utilice su conjunto de mapas, necesitará algún tipo de resolución de colisión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

binary search tree

Estructura de datos: árbol de búsqueda binaria

gfg 200x200 min

Conjunto de Python | diferencia () – GeeksforGeeks