作为一名进步的C程序员,我一直在研究哈希表。该表运行良好,高效(在一定程度上)并且易于实现,但我遇到的一个问题是它只将 const char * 作为值类型。我想实现一种方法来获得其他数据类型,而无需为每种类型写出方法。这是因为我必须创建多个结构来保存每个数据,然后当然需要重新编写所有方法以匹配这些新结构,这将变得非常长并且容易出错。
有更简单的方法吗?
有关更多信息和示例,其中一个方法是void InsertInto(Hash_Table DataBase, const char * key, const char * value);
这很有效,因为密钥将始终是字符串名称,但值类型不能只是字符,我会还需要它是int,float和double,以使其对我的用途有效。而且就目前而言,我有struct element { struct element * next, char * key, char * value };
我也意识到,为了掌握所有类型,这需要变得不同。作为一个例子的答案,将不胜感激,但并非完全必要。
答案 0 :(得分:0)
没问题。只需传递一个带有相关大小的void *。转换为unsigned char *进行散列。