* Name: Mattia Laudenzi * Matricola: ldnmtt84r28h501o * Email: scrivimi84@libero.it ###################################################### #include <stdio.h> <br> #include <stdlib.h><br> <br> struct lista {<br> char *info;<br> struct lista *next;<br> };<br> <br> typedef struct lista List;<br> typedef List* HashTable;<br> <br> <br> char *stringa();<br> HashTable crea (char *stringa);int find (lista *tabella, int dim, char *chiave);<br> void delete (lista *tabella, int dim, char *chiave);<br> void insert (lista *tabella, int dim, char *chiave);<br> int potenza(int esp, int dim);<br> int hash(char *word,int dim);<br> <br> int main(){<br> List *tabella;<br> <br> <br> <br> }<br> <br> <br> <br> <br> <br> <br> <br> int find (lista *tabella, int dim, char *chiave){<br> lista *testa;<br> lista *appoggio;<br> int a;<br> a=hash(chiave);<br> appoggio=tabella[a];<br> if (tabella[a] == NULL) return -1;<br> else {<br> while (appoggio != NULL){<br> if (strcmp(appoggio->info,word))<br> return 1;<br> else appoggio=appoggio->next;<br> }return 0;<br> <br> }<br> }<br> <br> void insert (lista *tabella, int dim, char *chiave){<br> lista *testa; lista *appoggio;<br> lista *punta;<br> punta=testa;<br> appoggio=testa;<br> int a,b;<br> a=find(word);<br> if (a=-1){<br> b=hash(word,dim);<br> tabella[b]=crea(word);<br> }<br> if (a=0) {<br> punta=crea(word);<br> punta->next=testa;<br> tabella[b]=punta;}<br> }<br> <br> void delete (lista *tabella, int dim, char *chiave){<br> lista *testa;<br> lista *appoggio;<br> lista *punta;<br> appoggio=tabella[a];<br> punta=appoggio;<br> if (strcmp(tabella[a]->info,word) == 0){<br> punta=tabella[a]->next;<br> free(appoggio);<br> tabella[a]=punta;<br> }<br> else {<br> while (appoggio != NULL){<br> if (strcmp(appoggio->info,word) == 0)<br> punta=appoggio->next;<br> free(appoggio);<br> else {<br> punta=appoggio;<br> appoggio=appoggio->next;<br> }return 0;<br> }<br> }<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> int hash(char *word,int dim){<br> int i,c,ritorno;<br> ritorno=0;<br> for (i=0;i<dim;i++){<br> ritorno+=(word[i]%dim)*potenza(i,dim);<br> ritorno=ritorno%dim;<br> }return ritorno;<br> }<br> int potenza(int esp,int dim){<br> int i,c;<br> int risultato;<br> risultato=1;<br> if (esp==0) return 1;<br> if (esp==1) return 256;<br> else for (i=0;i<=esp-1;i++){<br> risultato=(risultato%dim)*(256%dim);<br> }<br> risultato=risultato%dim;<br> return risultato;<br> }<br> <br> lista *crea (char *stringa){<br> lista *elemento;<br> elemento=(lista*)malloc(sizeof(lista));<br> elemento->info=stringa;<br> elemento->next=NULL;<br> return elemento;<br> }<br> <br> char *stringa(){<br> int i,c;<br> char *parola;<br> i=0;<br> parola=(char*)malloc(sizeof(char)*128);<br> while((c=getchar())!='\n'){<br> parola[i]=c;<br> i++;<br> }parola[i]='\0';<br> return parola;<br> }<br> <br> <br> <br><br><br><br><br> /*lista *testa;<br> lista *appoggio;<br> testa=(lista*)malloc(sizeof(lista));<br> testa->next=(lista*)malloc(sizeof(lista)); appoggio=testa; appoggio=appoggio->next appoggio->next=(lista*)malloc(sizeof(lista)); appoggio=appoggio->next; appoggio->next=NULL; testa->info=(char*)malloc(sizeof(char)*128); testa->info[0]='c'; testa->info[1]='\0';*/ #######################################################
This topic: Users
>
TWikiUsers
>
MattiaLaudenzi
Topic revision: r7 - 2004-05-11 - MattiaLaudenzi
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback