散列

#include <stdio.h>

const int maxN = 100010;
bool hashTable[maxN] = {false};
int main() {
    int i, n, m, x;
    printf("请输入集合n和集合m中元素的个数分别为:");
    scanf("%d%d", &n, &m);
    printf("请输入集合n中的元素:");
    for(i = 0; i < n; i++) {
        scanf("%d", &x);
        hashTable[x] = true; //数字x出现过
    }
    printf("请输入集合m中的元素:");
    for(i = 0; i < m; i++) {
        scanf("%d", &x);
        if(hashTable[x] == true) {
            printf("yes
");
        } else {
            printf("no
");
        }
    }
    return 0;
}

#include <stdio.h>

const int maxN = 100010;
int hashTable[maxN] = {0};
int main() {
    int i, n, m, x;
    printf("请输入集合n和集合m中元素的个数分别为:");
    scanf("%d%d", &n, &m);
    printf("请输入集合n中的元素:");
    for(i = 0; i < n; i++) {
        scanf("%d", &x);
        hashTable[x]++;
    }
    printf("请输入集合m中的元素:");
    for(i = 0; i < m; i++) {
        scanf("%d", &x);
        printf("%d 
",hashTable[x]);
    }
    return 0;
}

int hashFunc(char S[], int len) {
    int id = 0;
    for(int i = 0; i < len; i++) {
        id = id * 26 + (S[i] - 'A');
    }
    return id;
}

int hashFunc(char S[], int len) { //散列函数,将字符串S转化为整数
    int id = 0;
    for(int i = 0; i < len; i++) {
        if(S[i] >= 'A' && S[i] <= 'Z') {
            id = id * 52 + (S[i] - 'A');
        } else if(S[i] > 'a' && S[i] < 'z') {
            id = id * 52 + (S[i] - 'A') + 26;
        }
    }
    return id;
}
原文地址:https://www.cnblogs.com/xinmomoyan/p/10745800.html