【问题标题】:Initializing a Hash Table in C?在 C 中初始化哈希表?
【发布时间】:2016-02-07 00:28:24
【问题描述】:

我正在为我的 C 课做一些作业,但我不知道如何处理这个问题。我被告知“从堆中分配一个带有 htsize 存储桶的哈希表,每个存储桶最初都是空的。”我已经通过命令行参数指定了 htsize,并在以下代码中将其设为全局变量:

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

int htsize;
int main(int argc, char *argv[])
{
    if (argc <= 1)
    {
        printf("Please declare a table size");
        return 1;
    }
    htsize = atoi(argv[1]);
}

但我不确定“从堆中分配”意味着什么。有人可以帮我分解一下吗?

【问题讨论】:

  • C 有no standard hash table。您应该得到一个可以使用的库,或者任务是自己编写一个。无论哪种方式,问题都完全不清楚。
  • @MicroVirus 我必须自己创建一个,我只需要澄清“从堆中分配”的方向是什么
  • 从堆中分配意味着动态分配。您将不得不使用 malloc 来实现这一点。你知道哈希表的概念吗?
  • 我可以详细说明一件事:从堆中分配的意思是使用malloc 或类似的方法。
  • 然后查看What is a Memory Heap?

标签: c hashtable heap-memory


【解决方案1】:

C 不提供标准数据类型的哈希表,你必须实现一个。另外避免使用atoi,因为它是一个非常“不安全”的函数,通常会避免使用它。

已经实现的实现广泛可用,例如: https://gist.github.com/tonious/1377667

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2012-03-20
    • 2016-10-24
    相关资源
    最近更新 更多