update zig codes for Section 'Array', 'LinkedList', 'List' and 'Stack'

This commit is contained in:
sjinzh
2023-01-12 17:08:33 +08:00
parent d75a3582b0
commit 8325ce4474

View File

@ -14,7 +14,7 @@ pub fn randomAccess(nums: []i32) i32 {
return randomNum; return randomNum;
} }
// 扩展数组长度(运行时方法) // 扩展数组长度
pub fn extend(mem_allocator: std.mem.Allocator, nums: []i32, enlarge: usize) ![]i32 { pub fn extend(mem_allocator: std.mem.Allocator, nums: []i32, enlarge: usize) ![]i32 {
// 初始化一个扩展长度后的数组 // 初始化一个扩展长度后的数组
var res = try mem_allocator.alloc(i32, nums.len + enlarge); var res = try mem_allocator.alloc(i32, nums.len + enlarge);
@ -25,26 +25,6 @@ pub fn extend(mem_allocator: std.mem.Allocator, nums: []i32, enlarge: usize) ![]
return res; return res;
} }
// 扩展数组长度编译期方法A初始化新数组并进行元素拷贝
pub fn extendComptimeA(comptime nums: anytype, comptime enlarge: i32) [nums.len + enlarge]i32 {
// 初始化一个扩展长度后的数组
var res = [_]i32{0} ** (nums.len + enlarge);
// 将原数组中的所有元素复制到新数组
for (nums) |num, i| {
res[i] = num;
}
// 返回扩展后的新数组
return res;
}
// 扩展数组长度编译期方法B: 通过数组拼接运算符“++”)
pub fn extendComptimeB(comptime nums: anytype, comptime enlarge: i32) [nums.len + enlarge]i32 {
// 数组拼接操作
var res = nums ++ [_]i32{0} ** enlarge;
// 返回拼接后的新数组
return res;
}
// 在数组的索引 index 处插入元素 num // 在数组的索引 index 处插入元素 num
pub fn insert(nums: []i32, num: i32, index: usize) void { pub fn insert(nums: []i32, num: i32, index: usize) void {
// 把索引 index 以及之后的所有元素向后移动一位 // 把索引 index 以及之后的所有元素向后移动一位
@ -104,7 +84,7 @@ pub fn main() !void {
var randomNum = randomAccess(&array); var randomNum = randomAccess(&array);
std.debug.print("\n在 nums 中获取随机元素 {}", .{randomNum}); std.debug.print("\n在 nums 中获取随机元素 {}", .{randomNum});
// 长度扩展(运行时方法) // 长度扩展
var known_at_runtime_zero: usize = 0; var known_at_runtime_zero: usize = 0;
var nums: []i32 = array[known_at_runtime_zero..array.len]; var nums: []i32 = array[known_at_runtime_zero..array.len];
var mem_arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); var mem_arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
@ -113,14 +93,6 @@ pub fn main() !void {
nums = try extend(mem_allocator, nums, 3); nums = try extend(mem_allocator, nums, 3);
std.debug.print("\n将数组长度扩展至 8 ,得到 nums = ", .{}); std.debug.print("\n将数组长度扩展至 8 ,得到 nums = ", .{});
inc.PrintUtil.printArray(i32, nums); inc.PrintUtil.printArray(i32, nums);
// {
// // 长度扩展(编译期方法)
// comptime var array_comptime = [_]i32{ 1, 3, 2, 5, 4 };
// var nums_comptime = extendComptimeA(array_comptime, 3);
// // var nums_comptime = extendComptimeB(array_comptime, 3);
// std.debug.print("\n将数组长度扩展至 8 ,得到 nums_comptime = ", .{});
// inc.PrintUtil.printArray(i32, &nums_comptime);
// }
// 插入元素 // 插入元素
insert(nums, 6, 3); insert(nums, 6, 3);