int main(int argc, const char * argv[]) { HashTableNode nodes[2] = {{"Pantera",234}, {"Pantera2",223}}; HashTable * hashTable = newHashMap(nodes, 2); hashTableSet(hashTable, "key2", 666); hashTableSet(hashTable, "key3", 666); printHashTable(hashTable); int key2 = hashTableGet(hashTable, "key2"); printf("\nkey2 %i\n", key2); return 0; }
bool hasUniqueCharacters(char * str) { HashTable * table = newHashMap(NULL, 0); char * ptr = &str[0]; while (ptr != NULL && *ptr != '\0') { char temp[2] = {*ptr,'\0'}; if(hashTableGet(table, temp) == HashTableNotFound){ hashTableSet(table, temp, 1); printHashTable(table); ptr++; }else{ printHashTable(table); printf("string does not have unique characters, found at least two %c\n", *ptr); ptr = NULL; } } return false; }
void normalizeKey(RefManager manager) { HashMap nbUse = newHashMap(hashString, comparString); initIteratorRefManager(manager); while(hasNextRefManager(manager)) { Reference ref = nextRefManager(manager); char id [SIZE_BUFFER_ID]; char* author = ref->champs[ref_author]; if (strlen(author) > 0) { strcpy(id, getInitialesAuthor(author)); } sprintf(id + strlen(id), ":%s", ref->champs[ref_year]); printf("\n\n\n\n\n\n%s\n\n\n\n\n\n", id); if (containsHashMap(nbUse, id)) { char* nbTmp = getHashMap(nbUse, id); int occurence = getNb(nbTmp); size_t tailleCle = strlen(id); if (occurence == 1) { Reference oldRef = getRefManager(manager, id); char buffer[SIZE_BUFFER_ID]; strcpy(buffer, id); snprintf(buffer + tailleCle, SIZE_BUFFER_ID - tailleCle, ":1"); free(oldRef->id); oldRef->id = buffer; removeRefManager(manager, id); setRefManager(manager, oldRef); } snprintf(id + tailleCle, SIZE_BUFFER_ID - tailleCle, ":%d", occurence + 1); ref->id = id; setHashMap(nbUse, id, setNb(occurence + 1)); setRefManager(manager, ref); } else { removeRefManager(manager, ref->id); ref->id = id; setRefManager(manager, ref); setHashMap(nbUse, id, setNb(1)); } } }
/** * Return a new hashmap allocated and initialized empty. */ RefManager newRefManager() { RefManager result = malloc(sizeof(*result)); result->map = newHashMap(hashString, (int (*) (void*, void*)) strcmp); result->onlyUpdateMode = 0; return result; }