我无法在 C 中实现一个简单的列表,问题是通过指针连接项目。
以下代码是哈希表的片段,它应该将具有相同索引的项目存储在列表中以避免冲突。
typedef struct dictEntry {
void *key;
void *value;
struct dictEntry *next;
} dictEntry;
typedef struct dict {
dictEntry **table;
unsigned long size;
unsigned long used;
} dict;
void dictAdd(dict *d, void *key, void *value) {
int index = hash(key) & d->size;
dictEntry *entry;
entry = malloc(sizeof(entry));
entry->key = key;
entry->value = value;
entry->next = 0;
if (d->table[index]) {
/* this is does not work */
dictEntry *next;
next = d->table[index];
while (next) {
next = next->next;
}
next = entry;
} else {
d->table[index] = entry;
d->used++;
}
}
我的想法是遍历列表中的每个元素 ( next->next
) 并将指针分配给entry
最后一个元素 ( next = entry;
)。
经过几天的重写和移动部分代码,我似乎仍然找不到解决方案。