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); }
// 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; }