1에서 만들었던 무조건 5를 반환하는 hash함수를 업그레이드 시킬 것이다. 이 hash함수는 이름을 받아 해쉬값을 반환한다. 문자열을 받아 가장 간단한 해쉬 로직을 만드는 방법은 argument로 들어온 문자열의 각 문자의 ascii값을 더해 값을 반환하는 것이다.

코드

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>

#define MAX_NAME 256
#define TABLE_SIZE 10

typedef struct {
    char name[MAX_NAME];
    int age;
} person;

unsigned int hash(char* name) {
    int length = strnlen(name, MAX_NAME);
    unsigned int hash_value = 0;
    for (int i = 0; i < length; i++) {
        hash_value += name[i];
    }
    return hash_value;
}

int main() {
    printf("Jacob => %u\n", hash("Jacob"));
    printf("Bobby => %u\n", hash("Bobby"));
    printf("Natali => %u\n", hash("Natali"));
    printf("Rone => %u\n", hash("Rone"));
    printf("Railie => %u\n", hash("Railie"));
    printf("Tyler => %u\n", hash("Tyler"));
    return 0;
}

터미널

Jacob => 479
Bobby => 494
Natali => 601
Rone => 404
Railie => 598
Tyler => 528