如何解决如何修改此代码以将结构作为元素而不是字符串插入 Hashtable 中?
我正在使用以下代码来实现一个包含字符串作为值的哈希表。 我知道我可以使用结构作为元素来对哈希表进行结构声明,如下所示:
struct Ht_item {
int key;
struct value *v; };
但是当我尝试修改这些函数时,它没有将结构体“值”正确复制到结构体项中。有人可以帮我解决这个问题吗?
Ht_item* create_item(int key,struct value *v) {
Ht_item* item = (Ht_item*) malloc (sizeof(Ht_item));
item->key = (int*) malloc (1*sizeof(key));
item->value = value *v = (value*)malloc(sizeof(value));
item->key= key;
item->value=value;
return item; }
void ht_insert(HashTable* table,int key,struct value *v) {
Ht_item* item = create_item(key,value);
unsigned long index = hash_function(key);
Ht_item* current_item = table->items[index];
if (current_item == NULL) {
if (table->count == table->size) {
printf("Insert Error: Hash Table is full\n");
free_item(item);
return;
}
table->items[index] = item;
table->count++;
}
else {
if (strcmp(current_item->key,key) == 0) {
table->items[index]->value= value;
return;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。