c - 将获取字符串的第一个字符的哈希表程序
问题描述
我需要制作一个哈希表程序,它将以小写字母形式获取字符串的第一个字符,并将 ASCII 与用户输入的哈希表的大小取模。除了主要的,我应该在哪里输入尺寸?
这些是我当前的代码。在这段代码中,我要求用户在主模块函数中输入大小,但我对如何在除 main 之外的每个函数中使用它感到困惑。任何帮助表示赞赏。
#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);
}
解决方案
我可以使哈希表的大小动态吗?
是的,你可以,甚至需要,因为你写了“我需要制作一个哈希表程序……使用用户输入的哈希表的大小”。为了做到这一点,不要定义butstruct data *chain[size] = {NULL};
和struct data **chain;
in 的输入n
之后main
chain = calloc(n, sizeof *chain);
推荐阅读
- angular - 如何在 Angular 10 中为动态数据实现 dataTables?
- python - Optaplanner 和 Pyomo
- sql-server - IntelliJ Database Tools 插件无法识别系统存储过程的符号
- java - 如何为 Mapstruct 指定默认映射方法
- postgresql - postgresql我们如何看到死行
- google-cloud-platform - 检查给定的电子邮件地址作为谷歌帐户是否有效
- python - 处理 .csv 中不需要的(独立)双引号 - Python
- postgresql - 允许 docker 容器接受来自公共 IP 的流量
- java - 速度不会因异步请求而改变
- reactjs - 在 GraphQL 解析器(Meteor/React/Apollo)中对 MongoDB 数据进行排序