c - 哈希表的链表数组
问题描述
我想知道带 10 个名称的文本文件并阅读它。10个名字按降序排序,用除法形成哈希表。我需要构建它们的链表。哈希表的索引是数字 7。
我已经尝试过匹配指针变量并制作了一个哈希表,但我不能这样做。我在制作哈希表、插入数据、打印哈希表和搜索数据(输入名称时查找的函数。)时遇到了麻烦。我需要添加更多功能..我是怎么做到的?
#define SIZE 7
struct node {
char data[100][20];
struct node* next;
};
struct index {
struct node* head;
int count;
};
struct sum (data){
struct node* ptr;
int sum,i;
for (i=0; i<20; i++) {
ptr -> data[i] = ptr;
strcpy(sum,ptr);
}
return sum;
};
int hashFunction (int sum) {
return sum%SIZE;
}
void descend (data) {
int temp;
for(i=0;i<100;i++) {
for(j=0;j=20;j++) {
if (data[i][j+1]>data[i][j])
temp=data[i][j];
data[i][j]=data[i][j+1];
data[i][j+1]=temp;
}
}
}
int main (void) {
char data[100][20];
FILE *fp;
fp = fopen("data.txt","r");
for (int i=0; i<20; i++)
fscanf (fp,"%s",&data);
printf("%s\n",data);
}
fclose(fp);
hashTable = (struct index*)malloc(SIZE*sizeof(struct index));
descend(data);
return 0;
}
解决方案
首先,看起来您应该声明char data[20][100]
而不是char data[100][20]
.
然后,在 20 次迭代的循环中,您应该参考data[i]
而不是data
:
for (int i=0; i<20; i++)
fscanf(fp,"%s",data[i]);
printf("%s\n",data[i]);
}
请记住,您假设输入文件中的每一行最多 99 个字符。
这并不能回答我认为的实际问题,但是您至少应该解决上述所有问题。
推荐阅读
- ssl-certificate - err_cert_authority_invalid 在多个浏览器和多个站点上间歇性地出现
- qemu - 无法在 qemu 或 gem5 中打开 /lib/ld-linux-aarch64.so.1
- python - 每个类别的不同色调 seaborn
- php - 如何从 PHP 中的这种 mm-dd-yyyy 格式中删除前导零?
- python-3.x - 来自 zipfile 的 Webjobs 运行错误 (3587fd: ERR)
- java - 试图在java中创建一个gridgenerator:
- c - C算术转换将无符号与有符号相乘并产生浮点数
- javascript - Js Raphael object.animate 调用不起作用
- spring - spring.aop.proxy-target-class=true 和 @EnableAspectJAutoProxy(proxyTargetClass=true) 效果一样吗?
- magento - Magento2:如何将依赖项注入 CLI 命令