codice:
/* Funzione di creazione ed inizializzazione di una tabella hash. La funzione prende in input la dimensione del vettore di puntatori della tabella da creare e restituisce il puntatore alla struttura hash_table allocata. La funzione deve: - Allocare la zona di memoria per la struttura hash_table - Allocare il vettore di puntatori a int_list della hash_table - Inizializzare i puntatori del vettore a NULL - Inizializzare t_size a size e n_elem a 0. */ hash_table * create_hash_table(int size){ hash_table* ht = (hash_table*)malloc(sizeof(hash_table)); ht->h_table = (int_list **)malloc(sizeof(int_list *) * size); int i; for (i = 0; i < size; i++) ht->h_table[i]=NULL; ht->t_size=size; ht->n_elem=0; } /* Funzione di inserimento nella tabella hash. La funzione prende ininput la hash_table ed il valore intero da inserire. La funzione deve: - Allocare una zona di memoria per il nuovo elemento della lista - Porre il valore info dell'elemento allocato ad x - Inserire l'elemento IN TESTA alla lista con indice hash(x,ht) - Aggiornare n_elem */ void insert(hash_table *ht, int x){ int i = hash(x, ht); int_list *new_element = malloc(sizeof(int_list)); new_element->info = x; new_element->next = ht->h_table[i]; ht->h_table[i] = new_element; ht->n_elem++; } /* Funzione di eliminazione delle occorrenze di un valore La funzione prende in input la tabella hash ed il valore da eliminare La funzione deve: - Rimuovere tutti gli elementi con valore x dalla tabella. Tali elementi, se esistono, si troveranno nel bucket con indice h(x,ht) - Aggiornare n_elem Ricordarsi di deallocare la memoria degli elementi rimossi. */ void delete(hash_table *ht, int x){ int i,j; for (i=0; i< ht->n_elem;i++) { if (ht->h_table==x) { for (j = i +1; i < ht->n_elem; i++) {ht->h_table[j-1] = ht->h_table[j];} ht->n_elem--; } } /* Funzione di individuazione del bucket piu' pieno La funzione prende in input la tabella hash e ritorna l'indice del bucket che contiene il maggior numero di elementi. Nel caso in cui vi siano piu'bucket con lo stesso numero di elementi, si deve ritornare l'indice del bucket con indice minore tra quelli aventi il numero massimo di elementi. */ int index_max_bucket(hash_table *ht){ }
Spero di aver fatto bene, era il mio primo post.