我有两个问题,首先我要创建一个哈希表:我是否正确地实例化了数组?我正在尝试创建一个指向链接列表的动态指针链接:链接列表节点按值存储。我认为我的ItemType **语法不正确,虽然我不确定:这是我的理解,如果我弄错了,请纠正我。
第一个*将'HashArray'实例化为一个数组,然后第二个*将它实例化为指向每个链表头部的指针数组:我应该指向一个节点。 Node嵌套在LinkedList中;虽然它是公开的。无论如何这听起来很荒谬,但它应该读取“LinkedList :: Node :: ItemType ** HashArray”的内容吗? 有什么建议吗?
编辑:为简单起见,我没有包含我的复制/删除/分配构造函数:
编辑2:我也没有包含我的'hash'/'grow function'/'shrink function'。显然没有必要编写一个删除函数等,直到我写入插入和模板预先工作...让我知道是否有助于发布更多我有的东西。现在我收到编译错误
C2440:'=':无法转换'list<键入>' *'到'std :: string *'
在线
HashArray [index] = LinkedList;
这应该有助于确定问题
template <typename ItemType>
class HashSet {
int oldCapacity;
int capacity;
int size;
ItemType** HashArray;
HashSet() {
HashArray = new ItemType*[capacity] ;
memset(HashArray, 0, sizeof(ItemType*)*capacity);
size=0;
capacity = 0;
oldCapacity = 0;
}
void insert(const ItemType& item){
list <ItemType> *LinkedList= new list<ItemType>();
unsigned int index = hash(item);
if(HashArray[index]== NULL)
{
LinkedList->pushback(item);
HashArray[index] = LinkedList;
}
else if(!LinkedList->find(item)) //if it's not in the list
{
LinkedList->pushback(item);
HashArray[index] = LinkedList;
}
else //in list already
return;
}
}