| Crates.io | data_structure |
| lib.rs | data_structure |
| version | 0.1.20 |
| created_at | 2025-05-30 08:25:01.839959+00 |
| updated_at | 2025-08-15 09:51:27.369675+00 |
| description | A Rust library for implementing and managing common data structures. |
| homepage | |
| repository | https://github.com/InfinityBloom/data_structure.git |
| max_upload_size | |
| id | 1694809 |
| size | 89,268 |
注意: 此库只是我用来学习数据结构与算法和Git、Rust,请勿用于实际项目。
data_structure 是一个用 Rust 实现的常用数据结构和算法库,提供高性能、类型安全的实现。该项目旨在通过实践加深对数据结构原理的理解,并熟悉 Rust 语言特性和内存安全管理。
Err 枚举:包含 IndexErr(索引越界)和 FullErr(容器已满)两种常见错误类型linear::array::ArrayList):动态数组实现,支持自动扩容linear::array::SqList):固定大小数组,提供基础CRUD操作linear::list_node::ListNode):安全的Box指针实现,支持push/pop和索引访问linear::list_raw::NodeRaw):使用裸指针实现,用于学习unsafe代码linear::list::enum_linklist::List):基于Rust枚举的链表实现linear::stack::SequentialStack):顺序存储栈,支持push/pop操作linear::queue::Queue):固定大小队列实现linear::string::String):包含BF和KMP模式匹配算法non_linear::graph::AMGraph):邻接矩阵实现,支持自定义顶点数据non_linear::tree::{BinaryNode, BinaryTree}):链式存储二叉树,支持左右子节点操作sorting::quick):原地排序实现,平均时间复杂度O(nlogn)在 Cargo.toml 中添加依赖:
[dependencies]
data_structure = "0.1.20"
// 数组列表示例
use data_structure::linear::array::ArrayList;
let mut arr = ArrayList::new();
arr.insert(1, 42).unwrap();
assert_eq!(arr.get_element(1), Ok(&42));
// 链表示例
use data_structure::linear::list_node::ListNode;
let mut list = ListNode::new();
list.push(1).push(2);
assert_eq!(list.get(1).unwrap().data, Some(1));
// 二叉树示例
use data_structure::non_linear::tree::{BinaryNode, BinaryTree};
let mut tree = BinaryTree::with_root(1);
tree.root_mut().left_mut(2).right_mut(3);
// 快速排序示例
use data_structure::sorting::quick;
let mut nums = [5,3,1,4,2];
quick(&mut nums, 0, 4);
assert_eq!(nums, [1,2,3,4,5]);
cargo doc --open
cargo test