Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void resizeTable(HashMap* map, int capacity)
- {
- printf("resize triggered\n");
- //HashMap* doubled = hashMapNew(capacity);
- HashLink** doubled = malloc(sizeof(HashLink*) * capacity);
- HashLink** temp = map->table;
- map->table = doubled;
- if(map->size > 0) { //No need to iterate if there are no elems
- map->size = 0;
- printf("rehashing triggered\n");
- for (int i = 0; i < map->capacity; i++) { //Iterate through old maps members
- struct HashLink *iterator = temp[i];
- if (iterator != NULL) { //Current bucket has elems
- while(iterator != 0){
- //printf("K/V Pair inside of rehash is: (%s -> %d)\n",iterator->key, iterator->value);
- hashMapPut(map, iterator->key, iterator->value); //Put elems into new hashMap
- iterator = iterator->next;
- }
- }
- }
- }
- printf("rehashing complete\n");
- //Free the temp table
- for (int i = 0; i < map->capacity; i++) {
- struct HashLink *hashLinkIterator = temp[i];
- if(hashLinkIterator != NULL){
- while(hashLinkIterator != NULL){
- struct HashLink *toFree = hashLinkIterator;
- hashLinkIterator = hashLinkIterator->next;
- hashLinkDelete(toFree);
- }
- }else{
- hashLinkDelete(hashLinkIterator);
- }
- }
- free(temp);
- //Free complete
- map->capacity = capacity;
- //struct HashMap *temp = map;
- //map = doubled;
- //hashMapDelete(temp);
- printf("resizing complete\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement