Revision: 8954
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 15, 2008 01:40 by jaircazarin
Initial Code
#include<stdio.h> #include<stdlib.h> #include<string.h> #define NHASH 29989 //Use a prime number! #define MULT 31 struct node { char *word; int count; struct node * next; } node; typedef struct node Node; Node *bin[NHASH]; unsigned int hash(char *p) { unsigned int h = 0; for(; *p; p++) h = MULT * h + *p; return h % NHASH; } void incword(char *s) { Node * p; int h = hash(s); for(p = bin[h]; p!= NULL; p = p->next) { if(strcmp(s, p->word) == 0) { (p->count)++; return; } } p = (Node *)malloc(sizeof(node)); if(!p) return; p->count = 1; p->word = (char *)malloc(strlen(s)+1); strcpy(p->word, s); p->next = bin[h]; bin[h] = p; } int main() { char buf[100]; for (int i=0; i<NHASH; i++) bin[i] = NULL; while(scanf("%s", buf) == 1) incword(buf); for (int i = 0; i < NHASH; i++) for (Node * p = bin[i]; p != NULL; p = p->next) printf("%s %d\n", p->word, p->count); return 0; }
Initial URL
Initial Description
Implement a hash table for strings
Initial Title
String Hash Table
Initial Tags
Initial Language
C