【问题标题】:C map data structure [closed]C地图数据结构
【发布时间】:2011-04-14 03:37:46
【问题描述】:

我想在 C 中实现一个键值对数据结构。有什么想法吗?

【问题讨论】:

标签: c hashmap


【解决方案1】:

This 是一个简单的哈希表 在 ANSI C 中实现。它支持 一般的基本功能 期望哈希表:

  • 插入和检索键值关联
  • 查询密钥是否存在
  • 返回键值关联的总数
  • 枚举所有键值关联

希望这会有所帮助!

【讨论】:

  • 实际上,有点迂腐,这不是 ANSI C,因为它定义了名称以“str”开头的函数。你不能这样做,以“str”开头的全局函数名称的整个空间都是保留的。
  • 我不喜欢它,因为它没有指定函数的源代码,而且它似乎没有扩展或收缩。它只有固定数量的项目。
【解决方案2】:

如果您的键和值部分是相同的数据类型,那么您可以使用具有 2 列的二维数组,其中第一列将是您的键,第二列将是数据。 IT 将表现得像地图,但时间复杂度会有所不同。 时间复杂度: 搜索 - O(n) 插入 - 想要维护唯一的密钥然后 O(n) 别的 O(1)。

int map[N][2];

如果你想拥有不同类型的键值对,那么你可以使用列表结构。

struct node
{
int key;  //key part
string value;  // value part
struct node *next;
};

时间复杂度: 搜索 - O(n) 插入 - 想要维护唯一的密钥然后 O(n) 别的 O(1)。

【讨论】:

  • 支持时间复杂度提示。
【解决方案3】:

libmba 中的 hashmap 实现也支持典型的映射函数。

我不久前发现了它,虽然我没有使用它。也可以查看库项目homepage

我希望它可能对某人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多