我想多次添加同一个对象,因为对象将有多个键,即:BMW,M5,2015。当我打印表格时,我不想看到3个键的3个结果,我想要仅显示1个结果显示。正确的方法是让节点对象指向数据而不是复制它:
void hashTable::insert(Car * car_)
{
char key[200];
char curr[100];
car_->getKeywords(key);
char * token;
token = strtok(key, ",");
Node * srcNode = new Node;
Node->car = car_;
Node->next = NULL;
int index = calculateIndex(token);
srcNode->next = table[index];
table[index] = srcNode;
size++;
while (token != NULL)
{
int index = calculateIndex(token);
Node * newNode = new Node();
newNode->car = srcNode->car; //How to make this node point to scrNode?
newNode->next = table[index];
table[index] = newNode;
size++;
token = strtok(NULL, "?");
}
}
实施它的正确方法是什么?我的猜测是将对象添加到表中,然后使每个新节点指向添加的对象:
{{1}}
那么,我如何让newNode指向srcNode?我的方法是否正确?
答案 0 :(得分:0)
看看这篇文章: http://www.algolist.net/Data_structures/Hash_table/Simple_example 他们在C ++中有一个很好的简单哈希表实现。您当前的实现存在一些结构性问题,我认为您可以从此链接中学习。要扩充此列表中的一个以将其转换为值为指针的哈希表,只需将hashentry值成员更改为指向您选择的任何类型的指针。