mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 21:24:53 +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:
@ -67,7 +67,7 @@ class MyList {
|
||||
// 元素数量超出容量时,触发扩容机制
|
||||
if (size() == capacity())
|
||||
extendCapacity();
|
||||
// 索引 i 以及之后的元素都向后移动一位
|
||||
// 将索引 index 以及之后的元素都向后移动一位
|
||||
for (int j = size() - 1; j >= index; j--) {
|
||||
nums[j + 1] = nums[j];
|
||||
}
|
||||
|
||||
@ -5,3 +5,6 @@ add_executable(preorder_traversal_iii_template preorder_traversal_iii_template.c
|
||||
add_executable(permutations_i permutations_i.cpp)
|
||||
add_executable(permutations_ii permutations_ii.cpp)
|
||||
add_executable(n_queens n_queens.cpp)
|
||||
add_executable(subset_sum_i_naive subset_sum_i_naive.cpp)
|
||||
add_executable(subset_sum_i subset_sum_i.cpp)
|
||||
add_executable(subset_sum_ii subset_sum_ii.cpp)
|
||||
|
||||
@ -87,4 +87,4 @@ class GraphAdjList {
|
||||
}
|
||||
};
|
||||
|
||||
// GraphAdjList 的测试样例在 graph_adjacency_list_test.cpp 文件中
|
||||
// 测试样例请见 graph_adjacency_list_test.cpp
|
||||
|
||||
@ -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