fix: bug fixes for array_hash_map.c and counting_sort.c (#968)

* fix(codes/cpp): Memory leak fix: the space was not freed when pop removed the element.

* fix(codes/cpp): Fix access error when printArray(arr, 0)

* Update PrintUtil.hpp

* fix(codes/c): Fix some errors of cmake build

* feat(codes/c): Add hashing_search.c

* styles(codes/c): Modify function description

* styles(codes/c): Modify binary_search.c code style

* fix(codes/c): Fix the problem in binary_tree_bfs.c and the problem that the memory is not released.

* feat: Add preorder_traversal_i_compact.c

* feat(codes/c): Add head_sort.c

* feat(codes/c): Add bucket_sort.c

* feat(codes/c): Add binary_search_edge.c

* fix(codes/c): Add programs that are not managed by cmake (c code)

* feat(codes/c): Add selection_sort.c

* style(codes/c): Change swap in selection_sort.c to `selectionSort`

* styles(codes/c): Change style.

* fix(codes/c): Fix some formatting errors and temporarily remove backtracking chapters

* fix(codes/c): Fix space_complexity.c build error.

* feat(codes/c): Add array_binary_tree.c

* feat(code/c): Update push_back and pop_back in vector.h

* styles(codes/c): Adjust  format.

* feat(codes/c): Add `interation.c ` `recursion.c` `simple_hash.c` `binary_search_edge.c` `binary_search_insertion.c` in C codes.

* fix(mylist.c): Fix `insert` function in `mylist.c`

https://github.com/krahets/hello-algo/discussions/32#discussioncomment-6974163

* feat(codes/c): Add binary_search_recur.c

* fix(codes/c): Bug fixes in discussion
https://github.com/krahets/hello-algo/discussions/78\#discussioncomment-7611511
https://github.com/krahets/hello-algo/discussions/428\#discussioncomment-7637613

---------

Co-authored-by: Yudong Jin <krahets@163.com>
pull/973/head
gonglja 12 months ago committed by GitHub
parent f5407f2aaa
commit d960c99a1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -92,7 +92,7 @@ void pairSet(ArrayHashMap *hmap, MapSet *set) {
for (i = 0; i < HASHTABLE_CAPACITY; i++) { for (i = 0; i < HASHTABLE_CAPACITY; i++) {
if (hmap->buckets[i] != NULL) { if (hmap->buckets[i] != NULL) {
entries[index].key = hmap->buckets[i]->key; entries[index].key = hmap->buckets[i]->key;
entries[index].val = malloc(strlen(hmap->buckets[i]->val + 1)); entries[index].val = malloc(strlen(hmap->buckets[i]->val) + 1);
strcpy(entries[index].val, hmap->buckets[i]->val); strcpy(entries[index].val, hmap->buckets[i]->val);
index++; index++;
} }

@ -18,7 +18,7 @@ void countingSortNaive(int nums[], int size) {
} }
// 2. 统计各数字的出现次数 // 2. 统计各数字的出现次数
// counter[num] 代表 num 的出现次数 // counter[num] 代表 num 的出现次数
int *counter = malloc(sizeof(int) * m); int *counter = calloc(m, sizeof(int));
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
counter[nums[i]]++; counter[nums[i]]++;
} }
@ -29,6 +29,9 @@ void countingSortNaive(int nums[], int size) {
nums[i] = num; nums[i] = num;
} }
} }
// 4. 释放内存
free(counter);
} }
/* 计数排序 */ /* 计数排序 */
@ -43,7 +46,7 @@ void countingSort(int nums[], int size) {
} }
// 2. 统计各数字的出现次数 // 2. 统计各数字的出现次数
// counter[num] 代表 num 的出现次数 // counter[num] 代表 num 的出现次数
int *counter = malloc(sizeof(int) * m); int *counter = calloc(m, sizeof(int));
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
counter[nums[i]]++; counter[nums[i]]++;
} }
@ -62,6 +65,9 @@ void countingSort(int nums[], int size) {
} }
// 使用结果数组 res 覆盖原数组 nums // 使用结果数组 res 覆盖原数组 nums
memcpy(nums, res, size * sizeof(int)); memcpy(nums, res, size * sizeof(int));
// 5. 释放内存
free(counter);
} }
/* Driver Code */ /* Driver Code */

Loading…
Cancel
Save