void agregar_palabra(hash * tabla, palabras * palabra, int suma){
    int indice = 0;
    elemento * elemento_auxiliar=NULL;

    elemento_auxiliar = (elemento*)malloc(sizeof(elemento));
    if(elemento_auxiliar==NULL){
        exit(0);
    }
    elemento_auxiliar->inicial=*palabra;
    elemento_auxiliar->siguiente=NULL;

    indice = funcion_hash(suma);

    //printf("%d\n", indice);

    if(tabla->elementos[indice].primero == NULL){
        tabla->elementos[indice].primero = elemento_auxiliar;
        //printf("%c\n", tabla->elementos[indice].primero->inicial.primero->letra);
    }
    else{
        tabla->elementos[indice].ultimo->siguiente = elemento_auxiliar;
    }

    tabla->elementos[indice].ultimo = elemento_auxiliar;

    //mostrar_palabra(elemento_auxiliar->inicial);
}
Пример #2
0
// Se guarda la lista de letras en una lista de palabras
void guardar_palabra(Tabla *tabla, Palabra *palabra, int suma) {
    if(suma == 0)
        return; // Evita guardar "palabras" si detecta algo que no es una letra
    int indice = funcion_hash(suma);
    ListaPalabras *aux_lista = NULL;
    aux_lista = (ListaPalabras*) malloc(sizeof(ListaPalabras));
    aux_lista->siguiente = NULL;
    if(aux_lista == NULL)
        exit(0); // Se checa la memoria

    aux_lista->palabra = *palabra;
    aux_lista->siguiente = NULL;

    if ((tabla->array_cubetas[indice]).primero == NULL) {
        tabla->array_cubetas[indice].primero = aux_lista;
    } else {
        tabla->array_cubetas[indice].ultimo->siguiente = aux_lista;
    }
    tabla->array_cubetas[indice].ultimo = aux_lista;
}