C地图数据结构

Uda*_*age 14 c hashmap

我想在C中实现一个键值对数据结构.任何想法?

Car*_*nko 12

是ANSI C中的简单哈希表实现.它支持哈希表通常需要的基本功能:

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

希望这可以帮助!

  • 实际上,有点迂腐,这不是ANSI C,因为它定义了名称以"str"开头的函数.你不能这样做,保留以"str"开头的全局函数名称的整个空间. (9认同)

sit*_*mpa 7

如果您的键和值部分是相同的数据类型,那么您可以使用具有2列的二维数组,其中第一列将是您的键,第二列将是数据.IT将表现为地图,但时间复杂性将不同.时间复杂度:搜索 - O(n)插入 - 想要保持唯一键,然后O(n)否则为O(1).

int map[N][2];
Run Code Online (Sandbox Code Playgroud)

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

struct node
{
int key;  //key part
string value;  // value part
struct node *next;
};
Run Code Online (Sandbox Code Playgroud)

时间复杂度:搜索 - O(n)插入 - 想要保持唯一键,然后O(n)否则为O(1).