hello-algo/codes/rust/chapter_array_and_linkedlist/list.rs
2023-10-09 18:20:42 +08:00

75 lines
1.9 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* File: list.rs
* Created Time: 2023-01-18
* Author: xBLACICEx (xBLACKICEx@outlook.com), sjinzh (sjinzh@gmail.com)
*/
include!("../include/include.rs");
/* Driver Code */
fn main() {
// 初始化列表
let mut nums: Vec<i32> = vec![ 1, 3, 2, 5, 4 ];
print!("列表 nums = ");
print_util::print_array(&nums);
// 访问元素
let num = nums[1];
println!("\n访问索引 1 处的元素,得到 num = {num}");
// 更新元素
nums[1] = 0;
print!("将索引 1 处的元素更新为 0 ,得到 nums = ");
print_util::print_array(&nums);
// 清空列表
nums.clear();
print!("\n清空列表后 nums = ");
print_util::print_array(&nums);
// 尾部添加元素
nums.push(1);
nums.push(3);
nums.push(2);
nums.push(5);
nums.push(4);
print!("\n添加元素后 nums = ");
print_util::print_array(&nums);
// 中间插入元素
nums.insert(3, 6);
print!("\n在索引 3 处插入数字 6 ,得到 nums = ");
print_util::print_array(&nums);
// 删除元素
nums.remove(3);
print!("\n删除索引 3 处的元素,得到 nums = ");
print_util::print_array(&nums);
// 通过索引遍历列表
let mut _count = 0;
for _ in 0..nums.len() {
_count += 1;
}
// 直接遍历列表元素
_count = 0;
for _n in &nums {
_count += 1;
}
// 或者
// nums.iter().for_each(|_| _count += 1);
// let _count = nums.iter().fold(0, |_count, _| _count + 1);
// 拼接两个列表
let mut nums1 = vec![ 6, 8, 7, 10, 9 ];
nums.append(&mut nums1); // append移动 之后 nums1 为空!
// nums.extend(&nums1); // extend借用 nums1 能继续使用
print!("\n将列表 nums1 拼接到 nums 之后,得到 nums = ");
print_util::print_array(&nums);
// 排序列表
nums.sort();
print!("\n排序列表后 nums = ");
print_util::print_array(&nums);
}