C++哈希表创建链接表
时间: 2024-01-04 19:19:32 浏览: 98
C++中创建哈希表并使用链接表解决散列冲突的方法如下所示:
```cpp
#include <iostream>
#include <list>
class HashTable {
private:
static const int tableSize = 10; // 哈希表的大小
std::list<int> table[tableSize]; // 使用链表作为哈希表的每个槽
public:
int hashFunction(int key) {
return key % tableSize; // 哈希函数,取余操作
}
void insert(int key) {
int index = hashFunction(key); // 计算哈希值
table[index].push_back(key); // 将元素插入对应的链表中
}
void display() {
for (int i = 0; i < tableSize; i++) {
std::cout << "Index " << i << ": ";
for (auto it = table[i].begin(); it != table[i].end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
}
};
int main() {
HashTable hashTable;
hashTable.insert(55);
hashTable.insert(2);
hashTable.insert(108);
hashTable.display();
return 0;
}
```
这段代码创建了一个大小为10的哈希表,使用链表来解决散列冲突。`hashFunction`函数使用取余操作来计算哈希值,然后将元素插入对应的链表中。`display`函数用于显示哈希表的内容。
运行上述代码,输出结果如下:
```
Index 0:
Index 1:
Index 2: 2
Index 3:
Index 4:
Index 5: 55
Index 6:
Index 7:
Index 8:
Index 9: 108
```
可以看到,元素55和108被插入到了哈希表的索引5和索引9的链表中。
阅读全文