07 2022 档案

摘要:环境 Time 2022-05-04 Rust 1.60.0 前言 说明 默认情况下,Rust 只能有一个可变引用和多个不可变引号,而 Cell 可以实现内部可变。 目标 内部可变 Cell 的方法练习。 new fn main() { let cell = Cell::new(44); print 阅读全文
posted @ 2022-07-31 21:05 jiangbo4444 阅读(129) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-05-04 Rust 1.60.0 前言 说明 弱引用计数 Weak 可以在不计入所有权的情况下,增加一个引用,不保证值一定存在。 目标 弱引用计数 Weak 的方法练习,如果一个值只有弱引用,则会被回收。 new fn main() { let weak: Weak<i3 阅读全文
posted @ 2022-07-31 21:04 jiangbo4444 阅读(106) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-05-04 Rust 1.60.0 前言 说明 在 Rust 中,由于所有权的存在,一个值只能有一个所有者,引用计数可以绕过这种限制。 目标 引用计数 Rc 的方法练习,这个引用计数是非线程安全的。如果要线程安全,需要使用 Arc。 get_mut fn main() { 阅读全文
posted @ 2022-07-31 21:03 jiangbo4444 阅读(45) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-05-03 Rust 1.60.0 前言 说明 在 Rust 中,由于所有权的存在,一个值只能有一个所有者,引用计数可以绕过这种限制。 目标 引用计数 Rc 的方法练习,这个引用计数是非线程安全的。如果要线程安全,需要使用 Arc。 new fn main() { let 阅读全文
posted @ 2022-07-31 21:02 jiangbo4444 阅读(53) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 在 Rust 中,除了引用,也可以直接使用原始指针。 目标 使用原始空指针,空指针就是指向 0 地址的一个指针。 null fn main() { let null = ptr::null::<i32>(); println! 阅读全文
posted @ 2022-07-31 21:01 jiangbo4444 阅读(386) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 目标 简单使用 BTreeSet 的方法。 remove fn main() { let mut se 阅读全文
posted @ 2022-07-31 21:00 jiangbo4444 阅读(95) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 目标 简单使用 BTreeSet 的方法。 union fn main() { let set1 = 阅读全文
posted @ 2022-07-31 20:59 jiangbo4444 阅读(136) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 目标 简单使用 BTreeSet 的方法。 new fn main() { let mut set = 阅读全文
posted @ 2022-07-31 20:58 jiangbo4444 阅读(87) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 目标 简单使用 BTreeMap 的方法。 获取值 fn main() { let mut map = 阅读全文
posted @ 2022-07-31 20:56 jiangbo4444 阅读(264) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 目标 简单使用 BTreeMap 的方法。 contains_key fn main() { let 阅读全文
posted @ 2022-07-31 20:55 jiangbo4444 阅读(279) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 前言 说明 之前在标题的最前面,加上了【】标识,来进行内容的分类。 不过这样没有办法做到标识文章的先后顺序,有时候会将顺序弄反。 如果是一系列有前后因果关系的文章,就会导致逻辑混乱,所以决定在标题中加入编号顺序。 例如当前的这篇文章。 阅读全文
posted @ 2022-07-31 20:54 jiangbo4444 阅读(50) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-26 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 B-树是一种多路搜索树,在标准库中已有相应的实现。 一般编程语言会使用二叉搜索树(BST)来实现有序 Map 和 Set,而 Rust 选择了 B-树。 阅读全文
posted @ 2022-07-31 20:54 jiangbo4444 阅读(218) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-25 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现伸展树的插入、检索和删除方法的测试。 示例 测试模块 #[cfg(test)] mod tests { use super::*; } 插入 #[te 阅读全文
posted @ 2022-07-30 23:33 jiangbo4444 阅读(50) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-25 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 下面实现增加、检索和删除方法。 参考资料:https://www.geeksforgeeks.org/splay-tree-set-1-insert/。 阅读全文
posted @ 2022-07-30 23:32 jiangbo4444 阅读(42) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-25 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 伸展树也是一种可以自平衡的二叉搜索树,并且可以不计算节点的高度和平衡因子信息。 下面实现伸展方法,参考资料:https://www.geeksforgee 阅读全文
posted @ 2022-07-30 23:29 jiangbo4444 阅读(60) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-22 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 之前使用递归的方式实现平衡二叉树的插入和删除方法,下面使用迭代实现。 示例 插入 fn insert(&mut self, value: T) { let 阅读全文
posted @ 2022-07-30 23:28 jiangbo4444 阅读(86) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现平衡二叉树的插入、检索和删除方法的测试。 示例 测试模块 #[cfg(test)] mod tests { use super::*; } 插入 #[ 阅读全文
posted @ 2022-07-30 23:27 jiangbo4444 阅读(53) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现平衡二叉树的插入和删除方法。 示例 结构定义 基于二叉搜索树实现。 use std::cmp::Ordering; use super::{binar 阅读全文
posted @ 2022-07-30 23:25 jiangbo4444 阅读(34) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 二叉树有个不好的地方,就是在最坏情况下,可能退化成单链表的结构。 比如按从小到大的顺序插入,节点都在右孩子上,平衡二叉树(AVL)可以解决这种情况。 示例 阅读全文
posted @ 2022-07-30 23:23 jiangbo4444 阅读(110) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉搜索树的插入、检索和删除测试。 示例 测试模块 #[cfg(test)] mod tests { use super::*; } 插入 #[te 阅读全文
posted @ 2022-07-30 23:22 jiangbo4444 阅读(47) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 基于二叉树来实现二叉搜索树,实现删除方法。 示例 引入模块 pub mod binar 阅读全文
posted @ 2022-07-30 23:21 jiangbo4444 阅读(62) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 相比较二叉树,二叉搜索树的左节点都比父节点小,右节点都比父节点大。 基于二叉树来实现二叉搜索树,先实现插入和检索方法。 示例 引入模块 pub mod b 阅读全文
posted @ 2022-07-30 23:20 jiangbo4444 阅读(82) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉树的前序、中序和后序遍历的测试。 示例 测试模块 mod tests { use super::*; use crate::tree::Node 阅读全文
posted @ 2022-07-30 23:18 jiangbo4444 阅读(89) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 实现了二叉树的前序、中序和后序遍历。 示例 引入模块 pub mod binary_tree; 结构定义 use super::{NodeRef, Tre 阅读全文
posted @ 2022-07-30 23:17 jiangbo4444 阅读(149) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-21 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 学习树的过程中,一般先学简单的二叉树,前面已经学习过二叉树了。 各种树越来越多,需要将代码分布到不同文件去。 示例 操作定义 pub trait T 阅读全文
posted @ 2022-07-30 23:16 jiangbo4444 阅读(73) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-15 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 二叉堆的极值在最前面,可能是最大值或者最小值,又叫大顶堆或者小顶堆。 示例 new fn main() { let mut heap = Binar 阅读全文
posted @ 2022-07-30 23:15 jiangbo4444 阅读(97) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-15 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 二叉堆的极值在最前面,可能是最大值或者最小值,又叫大顶堆或者小顶堆。 标准库中已经内置了一个二叉堆(BinaryHeap),这里只做练习使用。 堆的 阅读全文
posted @ 2022-07-30 23:14 jiangbo4444 阅读(63) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-15 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 二叉堆的极值在最前面,可能是最大值或者最小值,又叫大顶堆或者小顶堆。 标准库中已经内置了一个二叉堆(BinaryHeap),这里只做练习使用。 示例 阅读全文
posted @ 2022-07-30 23:13 jiangbo4444 阅读(111) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-15 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 二叉堆的极值在最前面,可能是最大值或者最小值,又叫大顶堆或者小顶堆。 标准库中已经内置了一个二叉堆(BinaryHeap),这里只做练习使用。 示例 阅读全文
posted @ 2022-07-30 23:12 jiangbo4444 阅读(56) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-15 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 二叉堆的极值在最前面,可能是最大值或者最小值,又叫大顶堆或者小顶堆。 标准库中已经内置了一个二叉堆(BinaryHeap),这里只做练习使用。 示例 阅读全文
posted @ 2022-07-30 23:11 jiangbo4444 阅读(59) 评论(0) 推荐(0) 编辑
摘要:环境 Time 2022-04-15 Rust 1.60.0 前言 说明 基于标准库来学习各种数据结构,并不是从头实现数据结构,未考虑实现性能。 特点 二叉堆的极值在最前面,可能是最大值或者最小值,又叫大顶堆或者小顶堆。 标准库中已经内置了一个二叉堆(BinaryHeap),这里只做练习使用。 示例 阅读全文
posted @ 2022-07-30 23:10 jiangbo4444 阅读(69) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示