mirror of
https://github.com/krahets/hello-algo.git
synced 2025-10-30 09:57:30 +08:00
* update zig array list chapter * update not need change codes. * fix some pr issues and update time space chapter
43 lines
1.3 KiB
Zig
43 lines
1.3 KiB
Zig
// File: PrintUtil.zig
|
|
// Created Time: 2023-01-07
|
|
// Author: codingonion (coderonion@gmail.com)
|
|
|
|
const std = @import("std");
|
|
pub const ListUtil = @import("ListNode.zig");
|
|
pub const ListNode = ListUtil.ListNode;
|
|
pub const TreeUtil = @import("TreeNode.zig");
|
|
pub const TreeNode = TreeUtil.TreeNode;
|
|
|
|
// 打印队列
|
|
pub fn printQueue(comptime T: type, queue: std.TailQueue(T)) void {
|
|
var node = queue.first;
|
|
std.debug.print("[", .{});
|
|
var i: i32 = 0;
|
|
while (node != null) : (i += 1) {
|
|
var data = node.?.data;
|
|
std.debug.print("{}{s}", .{ data, if (i == queue.len - 1) "]" else ", " });
|
|
node = node.?.next;
|
|
}
|
|
}
|
|
|
|
// 打印哈希表
|
|
pub fn printHashMap(comptime TKey: type, comptime TValue: type, map: std.AutoHashMap(TKey, TValue)) void {
|
|
var it = map.iterator();
|
|
while (it.next()) |kv| {
|
|
var key = kv.key_ptr.*;
|
|
var value = kv.value_ptr.*;
|
|
std.debug.print("{} -> {s}\n", .{ key, value });
|
|
}
|
|
}
|
|
|
|
// 打印堆
|
|
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);
|
|
}
|