示例#1
0
int main() {
    int capacity = 11, i;
    HashTablePtr t = newHashTable(capacity, hashInt, compare);
    HashNodePtr node;
    putIntoHashTable(t, 1, 1);
    putIntoHashTable(t, 2, 2);
    putIntoHashTable(t, 3, 3);
    putIntoHashTable(t, 4, 4);
    putIntoHashTable(t, 5, 5);
    printHashTable(t);
    for(i = 0; i <= 5; i++) {
        HashNodePtr node = getFromHashTable(t, i);
        if(node) {
            printf("key %d values %d\n", node->key, node->value);
        } else {
            printf("cann't find key %d\n", i);
        }
    }
    for(i = 11; i <= 16; i++) {
        HashNodePtr node = getFromHashTable(t, i);
        if(node) {
            printf("key %d values %d\n", node->key, node->value);
        } else {
            printf("cann't find key %d\n", i);
        }
    }
    removeFromHashTable(t, 2);
    removeFromHashTable(t, 3);
    printHashTable(t);
    putIntoHashTable(t, 2, 2);
    putIntoHashTable(t, 13, 13);
    putIntoHashTable(t, 24, 24);
    printHashTable(t);
    removeFromHashTable(t, 2);
    printHashTable(t);
    node = getFromHashTable(t, 13);
    printf("key %d values %d\n", node->key, node->value);
    node = getFromHashTable(t, 24);
    printf("key %d values %d\n", node->key, node->value);
    putIntoHashTable(t, 35, 35);
    printHashTable(t);
    freeHashTable(t);
    return 0;
}
示例#2
0
文件: coin_sum.c 项目: Bolt64/my_code
long memo_coin_sums(int* dens, int size, int amount, HashTable *memo) {
  Tuple* tuple = convert_to_tuple(dens, size, amount);
  if(inHashTable(tuple, memo)) {
    return getFromHashTable(memo, tuple);
  }
  else {
    if(amount<0) return 0;
    else if(amount==0) return 1;
    else if(size==1) {
      if(amount%dens[0]==0) return 1;
      else return 0;
    }
    else {
      long result = memo_coin_sums(dens, size-1, amount, memo) + memo_coin_sums(dens, size, amount-dens[size-1], memo);
      insertInHashTable(memo, tuple, result);
      return result;
    }
  }
}
示例#3
0
void removeFromHashTable(HashTablePtr t, KeyType key) {
    HashNodePtr node = getFromHashTable(t, key);
    if(node) {
        node->status = DELETED;
    }
}