哈希表(搬运)

#define HashValueType long long 
const int MAXH = (1 << 20);
bool hashkey[MAXH];                        // 1)
HashValueType hashval[MAXH];               

int getKey(HashValueType val) {
    int key = (val & (MAXH-1) );           // 2)
    while (1) {
        if (!hashkey[key]) {               // 3)
            hashkey[key] = true;
            hashval[key] = val;
            return key;
        }
        else {
            if (hashval[key] == val) {
                return key;               // 4)
            }
            key = (key + 1) & (MAXH - 1); // 5)
        }
    }
}

bool hasKey(HashValueType val) {
    int key = ( val & (MAXH-1) );
    while (1) {
        if (!hashkey[key]) {
            return false;
        }
        else {
            if (hashval[key] == val) {
                return true;
            }
            key = (key + 1) & (MAXH - 1);
        }
    }
}

posted @ 2022-05-08 00:04  越菜越自信  阅读(31)  评论(0)    收藏  举报