06 2022 档案
摘要:环境 Time 2022-04-12 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用迭代的方式获取二叉搜索树中的最大和最小值。 示例 节点定义 type Nod
阅读全文
摘要:环境 Time 2022-04-11 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用迭代的方式查询二叉搜索树中的最大和最小值。 示例 节点定义 type Nod
阅读全文
摘要:环境 Time 2022-04-12 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用迭代的方式删除二叉搜索树中的某个节点。 示例 节点定义 type NodeR
阅读全文
摘要:环境 Time 2022-04-11 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用迭代的方式来实现二叉搜索树的节点检索。 示例 节点定义 type NodeR
阅读全文
摘要:环境 Time 2022-04-11 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用递归的方式来实现二叉搜索树的节点检索。 示例 节点定义 type NodeR
阅读全文
摘要:环境 Time 2022-04-11 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用迭代的方式来实现二叉搜索树的节点插入。 示例 节点定义 type NodeR
阅读全文
摘要:环境 Time 2022-04-11 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 使用递归的方式来实现二叉搜索树的节点插入。 示例 节点定义 type NodeR
阅读全文
摘要:环境 Time 2022-04-10 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 之前使用递归的方式实现了二叉树的后序遍历,这里使用迭代的方式。 示例 节点定义 type NodeRef<T> = Option<Box<Node<T>>>; st
阅读全文
摘要:环境 Time 2022-04-06 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 二叉树是一个节点最多有两个分支的树。到目前为止,标准库还没有内置支持。 示例 节点定义 type NodeRef<T> = Option<Box<Node<T>>>
阅读全文
摘要:环境 Time 2022-04-10 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 之前使用递归的方式实现了二叉树的中序遍历,这里使用迭代的方式。 示例 节点定义 type NodeRef<T> = Option<Box<Node<T>>>; st
阅读全文
摘要:环境 Time 2022-04-06 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 二叉树是一个节点最多有两个分支的树。到目前为止,标准库还没有内置支持。 示例 节点定义 type NodeRef<T> = Option<Box<Node<T>>>
阅读全文
摘要:环境 Time 2022-04-09 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 之前使用递归的方式实现了二叉树的前序遍历,这里使用迭代的方式。 示例 节点定义 type NodeRef<T> = Option<Box<Node<T>>>; st
阅读全文
摘要:环境 Time 2022-04-06 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 二叉树是一个节点最多有两个分支的树。到目前为止,标准库还没有内置支持。 示例 节点定义 type NodeRef<T> = Option<Box<Node<T>>>
阅读全文
摘要:环境 Time 2022-04-02 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 链表也是一种线性的数据结构,可以方便地插入和删除元素,不过按位置访问需要从头遍历。 由于 Rust 的所有权机制,实现链表比其它语言复杂,不过标准库已内置。 示例
阅读全文
摘要:环境 Time 2022-04-02 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 双端队列可以在队首或者队尾加入或者删除数据。 示例 抽象数据接口 trait Deque<T> { /// 新建一个空队列 fn new() -> Self; //
阅读全文
摘要:环境 Time 2022-04-02 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 队列是一种先进先出(FIFO)的数据结构。 示例 抽象数据接口 trait Queue<T> { /// 新建一个空队列 fn new() -> Self; ///
阅读全文
摘要:环境 Time 2022-04-02 Rust 1.59.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构。 特点 栈是一种后进先出(LIFO)的数据结构。 示例 抽象数据接口 trait Stack<T> { /// 新建一个空栈 fn new() -> Self; /// 栈
阅读全文
摘要:环境 Time 2022-03-30 Rust 1.59.0 演示 思想:将大列表分割成小列表,在将小列表排序后组合成大列表再次排序。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 递归实现 fn merge_sort(data: &mut [i32
阅读全文
摘要:环境 Time 2022-04-01 Rust 1.59.0 演示 思想:将列表中每个数按照基数拆分成不同的位数,然后分别对不同的位数分别进行排序。 限制:不能有负数,最大值不能太大。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 实现 fn rad
阅读全文
摘要:环境 Time 2022-03-31 Rust 1.59.0 演示 思想:定义个长度为列表中最大值的数组,然后将列表中每个值对应到数组的索引上。 限制:不能有负数,最大值不能太大。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 实现 fn count
阅读全文
摘要:环境 Time 2022-03-30 Rust 1.59.0 演示 思想:选择一个中间值,不停交换左右两侧(和中间值比较大小),直到有序。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 实现 fn quick_sort(data: &mut [i32
阅读全文
摘要:环境 Time 2022-04-01 Rust 1.59.0 演示 思想:将列表间隔的元素分别排序,然后缩小间隔,直接所有元素有序。 参考:https://github.com/TheAlgorithms/Rust/blob/master/src/sorting/shell_sort.rs 示例 实
阅读全文
摘要:环境 Time 2022-03-29 Rust 1.59.0 演示 思想:在每一次遍历的过程中,找当前最大或者最小的,然后进行位置交换。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 实现 fn selection_sort(data: &mut [
阅读全文
摘要:环境 Time 2022-03-29 Rust 1.59.0 演示 思想:依次遍历元素并将其插入到已排序的部分中,直到所有元素有序。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 实现 fn insertion_sort(data: &mut [i3
阅读全文
摘要:环境 Time 2022-03-28 Rust 1.59.0 演示 思想:如果相邻的两个元素不符合顺序要求,则交换两者的位置。 动画来源:https://visualgo.net/en/sorting?slide=1 示例 实现 fn bubble_sort(data: &mut [i32]) {
阅读全文
摘要:环境 Time 2022-04-01 Rust 1.59.0 资源 Rust 数据结构和算法(中文):https://github.com/QMHTMY/RustBook Rust 数据结构和算法(中文):http://algos.rs/about-book.html Rust 数据结构和算法(英文
阅读全文
摘要:环境 Time 2022-03-25 Rust 1.59.0 示例 get_or_insert_with fn main() { let mut name = Some("JiangBo"); println!("{:?}", name.get_or_insert_with(|| "Rust"));
阅读全文
摘要:环境 Time 2022-03-25 Rust 1.59.0 示例 iter_mut fn main() { let mut name = Some("JiangBo".to_owned()); println!("{:?}", name.iter_mut().next()); } and fn m
阅读全文
摘要:环境 Time 2022-03-25 Rust 1.59.0 示例 unwrap_unchecked fn main() { let name = Some("JiangBo"); println!("{:?}", unsafe { name.unwrap_unchecked() }); } map
阅读全文
摘要:环境 Time 2022-03-25 Rust 1.59.0 示例 is_some fn main() { let name = Some("JiangBo"); println!("{:?}", name.is_some()); } is_none fn main() { let name = S
阅读全文