``` C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Ht_item {
    char* key;
    char* value;
} Ht_item;

typedef struct HashTable {
    Ht_item** items;
    int size;
    int count;
} HashTable;

Ht_item* create_item(char* key, char* value) {
    Ht_item* item = (Ht_item*) malloc(sizeof(Ht_item));
    item->key = (char*) malloc(strlen(key) + 1);
    item->value = (char*) malloc(strlen(value) + 1);
    strcpy(item->key, key);
    strcpy(item->value, value);
    return item;
}

HashTable* create_table(int size) {
    HashTable* table = (HashTable*) malloc(sizeof(HashTable));
    table->size = size;
    table->count = 0;
    table->items = (Ht_item**) calloc(table->size, sizeof(Ht_item*));
    for (int i = 0; i < table->size; i++)
        table->items[i] = NULL;
    return table;
}

void free_item(Ht_item* item) {
    free(item->key);
    free(item->value);
    free(item);
}

void free_table(HashTable* table) {
    for (int i = 0; i < table->size; i++) {
        Ht_item* item = table->items[i];
        if (item != NULL)
            free_item(item);
    }
    free(table->items);
    free(table);
}

int hash_function(char* key) {
    // Simple hash function: sum of ASCII values of characters in the key
    int sum = 0;
    for (int i = 0; i < strlen(key); i++) {
        sum += key[i];
    }
    return sum % 10;
}

void ht_insert(HashTable* table, char* key, char* value) {
    Ht_item* item = create_item(key, value);
    int index = hash_function(key);
    Ht_item* current_item = table->items[index];
    if (current_item == NULL) {
        if (table->count == table->size) {
            printf("Insert Error: Hash Table is full\n");
            free_item(item);
            return;
        }
        table->items[index] = item;
        table->count++;
    } else {
        // Collision handling is not implemented in this example
    }
}

Ht_item* ht_search(HashTable* table, char* key) {
    int index = hash_function(key);
    Ht_item* item = table->items[index];
    if (item != NULL && strcmp(item->key, key) == 0) {
        return item;
    }
    return NULL;
}

void ht_delete(HashTable* table, char* key) {
    int index = hash_function(key);
    Ht_item* item = table->items[index];
    if (item != NULL && strcmp(item->key, key) == 0) {
        free_item(item);
        table->items[index] = NULL;
        table->count--;
    }
}
```
``` C #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Ht_item { ถ่าน * คีย์; ค่าถ่าน *; } Ht_item; typedef struct HashTable { รายการ Ht_item **; ขนาด int; นับจำนวน; } แฮชตาราง; Ht_item* create_item (คีย์ถ่าน * ค่าถ่าน *) { Ht_item* item = (Ht_item*) malloc (ขนาดของ (Ht_item)); รายการ -> คีย์ = (ถ่าน *) malloc (strlen (คีย์) + 1); รายการ -> ค่า = (ถ่าน *) malloc (strlen (ค่า) + 1); strcpy(รายการ -> คีย์, คีย์); strcpy(รายการ->มูลค่า, มูลค่า); สิ่งของที่คืน; } HashTable* create_table(ขนาด int) { HashTable* table = (HashTable*) malloc(ขนาดของ(HashTable)); ตาราง -> ขนาด = ขนาด; ตาราง -> จำนวน = 0; ตาราง->รายการ = (Ht_item**) calloc(ตาราง->ขนาด, ขนาดของ(Ht_item*)); สำหรับ (int i = 0; i < table->size; i++) table->items[i] = NULL; โต๊ะขากลับ; } เป็นโมฆะ free_item (รายการ Ht_item *) { ฟรี (รายการ -> คีย์); ฟรี(รายการ->มูลค่า); ฟรี(รายการ); } void free_table(ตาราง HashTable*) { สำหรับ (int i = 0; i < table->size; i++) { Ht_item* item = table->items[i]; ถ้า (รายการ != NULL) free_item(รายการ); } ฟรี(ตาราง->รายการ); ฟรี(โต๊ะ); } int hash_function(char* key) { // ฟังก์ชันแฮชอย่างง่าย: ผลรวมของค่า ASCII ของอักขระในคีย์ int sum = 0; สำหรับ (int i = 0; i < strlen(key); i++) { sum += key[i]; } ผลตอบแทนรวม % 10; } ถือเป็นโมฆะ ht_insert (ตาราง HashTable*, คีย์ถ่าน*, ค่าถ่าน*) { Ht_item* item = create_item(คีย์, ค่า); ดัชนี int = hash_function (คีย์); Ht_item* current_item = ตาราง -> รายการ [ดัชนี]; if (current_item == NULL) { if (table->count == table->size) { printf ("ข้อผิดพลาดในการแทรก: ตารางแฮชเต็ม \ n"); free_item(รายการ); กลับ; } ตาราง -> รายการ [ดัชนี] = รายการ; ตาราง -> นับ ++; } else { // ไม่มีการใช้การจัดการการชนในตัวอย่างนี้ } } Ht_item* ht_search(HashTable* table, char* key) { int index = hash_function(key); Ht_item* item = table->items[index]; if (item != NULL && strcmp(item->key, key) == 0) { ส่งคืนรายการ; } กลับค่าโมฆะ; } ถือเป็นโมฆะ ht_delete (ตาราง HashTable*, คีย์ถ่าน*) { ดัชนี int = hash_function(คีย์); Ht_item* item = table->items[index]; ถ้า (รายการ != NULL && strcmp (รายการ -> คีย์, คีย์) == 0) { free_item (รายการ); ตาราง -> รายการ [ดัชนี] = NULL; ตาราง->นับ--; } } ```
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence