add zig codes for Section 'Hash Map', 'Linear Search' and 'Heap'

This commit is contained in:
sjinzh
2023-01-14 08:11:54 +08:00
parent 6f65c84e36
commit 5fee1901cc
4 changed files with 150 additions and 2 deletions

View File

@@ -3,8 +3,10 @@
// Author: sjinzh (sjinzh@gmail.com)
const std = @import("std");
const ListNode = @import("ListNode.zig").ListNode;
const TreeNode = @import("TreeNode.zig").TreeNode;
pub const ListUtil = @import("ListNode.zig");
pub const ListNode = ListUtil.ListNode;
pub const TreeUtil = @import("TreeNode.zig");
pub const TreeNode = TreeUtil.TreeNode;
// Print an array
pub fn printArray(comptime T: type, nums: []T) void {
@@ -56,6 +58,17 @@ pub fn printHashMap(comptime TKey: type, comptime TValue: type, map: std.AutoHas
}
}
// print a heap (PriorityQueue)
pub fn printHeap(comptime T: type, mem_allocator: std.mem.Allocator, queue: anytype) !void {
var arr = queue.items;
var len = queue.len;
std.debug.print("堆的数组表示:", .{});
printArray(T, arr[0..len]);
std.debug.print("\n堆的树状表示:\n", .{});
var root = try TreeUtil.arrToTree(T, mem_allocator, arr[0..len]);
try printTree(root, null, false);
}
// This tree printer is borrowed from TECHIE DELIGHT
// https://www.techiedelight.com/c-program-print-binary-tree/
const Trunk = struct {