ha sh табличная программа, которая будет принимать первый символ строки - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно создать табличную программу ha sh, которая будет принимать первый символ строки в маленькой строчной букве и по модулю ASCII с размером таблицы ha sh, которую вводит пользователь. Где я должен ввести размер, отличный от основного?

Это мои текущие коды. В этом коде я прошу пользователя ввести размер в основной функции модуля, но я не совсем понимаю, как использовать его в каждой функции, кроме основной. Любая помощь приветствуется.

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>




struct data
{
    char name [100];
    char age[2];
    struct data *next;
};

struct data *chain[size] = {NULL};

struct data* insert(char name[], char age[]){
    struct data *curr = (struct data*) malloc (sizeof(data));
    strcpy(curr->name, name);
    printf("input name: ");
    scanf(" %[^\n]s",strcpy(curr->name, name));
    printf("input age: ");
    scanf(" %[^\n]s", strcpy(curr->age, age));
    curr->next = NULL;
    return curr;
};


int main(){
    int n;
    char name[100]; 
    char age[2];
    char firstChar;
    int key;
    int index = 0;

    printf("input the number of hash table: ");
    scanf("%d", &n); getchar();
    printf("\n");


    int option;
    do{
        printf("=== Option Menu ===\n");
        printf("1. insert data\n");
        printf("2. delete data\n");
        printf("3. search data\n");
        printf("4. view data\n");
        printf("5. exit\n");
        printf("input option: ");
        scanf("%d", &option); getchar();

        switch(option){
            case 1:
                insert(name,age);
                break;
        }
    }while(option!=5);
}

1 Ответ

0 голосов
/ 24 марта 2020

могу ли я сделать размер динамической хеш-таблицы c?

Да, вы можете, и вам даже нужно, так как вы написали " Мне нужно сделать ha sh таблица программ… с размером таблицы ha sh, которую пользователь вводит". Чтобы сделать это, не определяйте struct data *chain[size] = {NULL};, но struct data **chain; и после ввода n в main do

    chain = calloc(n, sizeof *chain);
...