#include #include #include char* qs = "asda=3422&hello_world=ahahhaa&asdasd=42342"; //LL node typedef struct n { void* content; struct n* next; } node; typedef struct { char* key; char* value; } entry; int c() { int cnt = 0; while( *(qs)++ ) { if ( *qs == '=' ) cnt++; } return cnt; } int hashcode( char* tc ) { int val = 0; for( int i = 0; i < strlen( tc ); i++ ) { val = ( (127 * tc[i]) + val ) % 1686049; } val = val % 3; return val; // value MOD bucketsize; } void insert( node table[], char* key, char* value ){ char* k; char* v; entry* e; // allocate mem e = (entry*)malloc( sizeof( entry ) ); k = (char*)malloc( strlen( key ) + 1 ); v = (char*)malloc( strlen( value ) + 1 ); // copy mem strcpy( k, key ); strcpy( v, value ); // setup entry. e->key = k; e->value = v; int bucketn = hashcode(key); table[bucketn].content = e; } void get( node table[], char* key ) { int h = hashcode( key ); printf( "%s\n", ((entry)table.content)->value ); } int main( int argc, char** argv ) { node buckets[c()]; insert( buckets, "hello", "cu" ); insert( buckets, "goodbye", "later" ); insert( buckets, "why", "i don't know" ); insert( buckets, "work!", "to work!" ); get( buckets, "hello" ); printf( "hello" ); return 1; }