mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-01 20:12:07 +08:00
1. Remove Pair class from hash coliision code.
2. Fix the comment in my_list code. 3. Add a Q&A to the summary of sorting.
This commit is contained in:
@ -1,2 +1,6 @@
|
||||
add_executable(array_hash_map array_hash_map.cpp)
|
||||
add_executable(hash_map hash_map.cpp)
|
||||
add_executable(array_hash_map_test array_hash_map_test.cpp)
|
||||
add_executable(hash_map_chaining hash_map_chaining.cpp)
|
||||
add_executable(hash_map_open_addressing hash_map_open_addressing.cpp)
|
||||
add_executable(simple_hash simple_hash.cpp)
|
||||
add_executable(built_in_hash built_in_hash.cpp)
|
||||
|
||||
@ -107,47 +107,4 @@ class ArrayHashMap {
|
||||
}
|
||||
};
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
/* 初始化哈希表 */
|
||||
ArrayHashMap map = ArrayHashMap();
|
||||
|
||||
/* 添加操作 */
|
||||
// 在哈希表中添加键值对 (key, value)
|
||||
map.put(12836, "小哈");
|
||||
map.put(15937, "小啰");
|
||||
map.put(16750, "小算");
|
||||
map.put(13276, "小法");
|
||||
map.put(10583, "小鸭");
|
||||
cout << "\n添加完成后,哈希表为\nKey -> Value" << endl;
|
||||
map.print();
|
||||
|
||||
/* 查询操作 */
|
||||
// 向哈希表输入键 key ,得到值 value
|
||||
string name = map.get(15937);
|
||||
cout << "\n输入学号 15937 ,查询到姓名 " << name << endl;
|
||||
|
||||
/* 删除操作 */
|
||||
// 在哈希表中删除键值对 (key, value)
|
||||
map.remove(10583);
|
||||
cout << "\n删除 10583 后,哈希表为\nKey -> Value" << endl;
|
||||
map.print();
|
||||
|
||||
/* 遍历哈希表 */
|
||||
cout << "\n遍历键值对 Key->Value" << endl;
|
||||
for (auto kv : map.pairSet()) {
|
||||
cout << kv->key << " -> " << kv->val << endl;
|
||||
}
|
||||
|
||||
cout << "\n单独遍历键 Key" << endl;
|
||||
for (auto key : map.keySet()) {
|
||||
cout << key << endl;
|
||||
}
|
||||
|
||||
cout << "\n单独遍历值 Value" << endl;
|
||||
for (auto val : map.valueSet()) {
|
||||
cout << val << endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
// 测试样例请见 array_hash_map_test.cpp
|
||||
|
||||
52
codes/cpp/chapter_hashing/array_hash_map_test.cpp
Normal file
52
codes/cpp/chapter_hashing/array_hash_map_test.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
/**
|
||||
* File: array_hash_map_test.cpp
|
||||
* Created Time: 2022-12-14
|
||||
* Author: msk397 (machangxinq@gmail.com)
|
||||
*/
|
||||
|
||||
#include "./array_hash_map.cpp"
|
||||
|
||||
/* Driver Code */
|
||||
int main() {
|
||||
/* 初始化哈希表 */
|
||||
ArrayHashMap map = ArrayHashMap();
|
||||
|
||||
/* 添加操作 */
|
||||
// 在哈希表中添加键值对 (key, value)
|
||||
map.put(12836, "小哈");
|
||||
map.put(15937, "小啰");
|
||||
map.put(16750, "小算");
|
||||
map.put(13276, "小法");
|
||||
map.put(10583, "小鸭");
|
||||
cout << "\n添加完成后,哈希表为\nKey -> Value" << endl;
|
||||
map.print();
|
||||
|
||||
/* 查询操作 */
|
||||
// 向哈希表输入键 key ,得到值 value
|
||||
string name = map.get(15937);
|
||||
cout << "\n输入学号 15937 ,查询到姓名 " << name << endl;
|
||||
|
||||
/* 删除操作 */
|
||||
// 在哈希表中删除键值对 (key, value)
|
||||
map.remove(10583);
|
||||
cout << "\n删除 10583 后,哈希表为\nKey -> Value" << endl;
|
||||
map.print();
|
||||
|
||||
/* 遍历哈希表 */
|
||||
cout << "\n遍历键值对 Key->Value" << endl;
|
||||
for (auto kv : map.pairSet()) {
|
||||
cout << kv->key << " -> " << kv->val << endl;
|
||||
}
|
||||
|
||||
cout << "\n单独遍历键 Key" << endl;
|
||||
for (auto key : map.keySet()) {
|
||||
cout << key << endl;
|
||||
}
|
||||
|
||||
cout << "\n单独遍历值 Value" << endl;
|
||||
for (auto val : map.valueSet()) {
|
||||
cout << val << endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -4,18 +4,7 @@
|
||||
* Author: Krahets (krahets@163.com)
|
||||
*/
|
||||
|
||||
#include "../utils/common.hpp"
|
||||
|
||||
/* 键值对 */
|
||||
struct Pair {
|
||||
public:
|
||||
int key;
|
||||
string val;
|
||||
Pair(int key, string val) {
|
||||
this->key = key;
|
||||
this->val = val;
|
||||
}
|
||||
};
|
||||
#include "./array_hash_map.cpp"
|
||||
|
||||
/* 链式地址哈希表 */
|
||||
class HashMapChaining {
|
||||
|
||||
@ -4,16 +4,7 @@
|
||||
* Author: Krahets (krahets@163.com)
|
||||
*/
|
||||
|
||||
#include "../utils/common.hpp"
|
||||
|
||||
/* 键值对 */
|
||||
struct Pair {
|
||||
int key;
|
||||
string val;
|
||||
|
||||
Pair(int k, string v) : key(k), val(v) {
|
||||
}
|
||||
};
|
||||
#include "./array_hash_map.cpp"
|
||||
|
||||
/* 开放寻址哈希表 */
|
||||
class HashMapOpenAddressing {
|
||||
|
||||
Reference in New Issue
Block a user