 Rust 程序设计语言简体中文版............................................................................ 278 12.4. 采用测试驱动开发完善库的功能 ................................................................................ 293 12.5. 处理环境变量 将错误信息输出到标准错误而不是标准输出 ............................................................. 316 13. Rust 中的函数式语言功能:迭代器与闭包 ...................................................................... 318 13.1. 闭包:可以捕获其环境的匿名函数 io/trpl-zh-cn/ 在线 阅读。 本书也有 由 No Starch Press 出版的纸质版和电子版。 ? 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/600 Rust 程序设计语言 简体中文版 前 言 前言 foreword.md commit 1fedfc4b960 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版............................................................................ 278 12.4. 采用测试驱动开发完善库的功能 ................................................................................ 293 12.5. 处理环境变量 将错误信息输出到标准错误而不是标准输出 ............................................................. 316 13. Rust 中的函数式语言功能:迭代器与闭包 ...................................................................... 318 13.1. 闭包:可以捕获其环境的匿名函数 io/trpl-zh-cn/ 在线 阅读。 本书也有 由 No Starch Press 出版的纸质版和电子版。 ? 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/600 Rust 程序设计语言 简体中文版 前 言 前言 foreword.md commit 1fedfc4b960 码力 | 600 页 | 12.99 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 12.4. 采用测试驱动开发完善库的功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 简体中文版.pdf) 本书也有由 No Starch Press 出版的纸质版和电子版。 🚨 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/562Rust 程序设计语言 简体中文版 前言 Rust 程序设计语言的本质实际在于 赋能(empowerment):无论你现在编写的是何种代码, 使依赖在 Rust 生态系统中保持一致。 • Rustfmt 格式化工具确保开发者遵循一致的代码风格。 • rust-analyzer 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过 Rust 学习了操作系统开发 等主0 码力 | 562 页 | 3.23 MB | 25 天前3 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 12.4. 采用测试驱动开发完善库的功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 简体中文版.pdf) 本书也有由 No Starch Press 出版的纸质版和电子版。 🚨 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/562Rust 程序设计语言 简体中文版 前言 Rust 程序设计语言的本质实际在于 赋能(empowerment):无论你现在编写的是何种代码, 使依赖在 Rust 生态系统中保持一致。 • Rustfmt 格式化工具确保开发者遵循一致的代码风格。 • rust-analyzer 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过 Rust 学习了操作系统开发 等主0 码力 | 562 页 | 3.23 MB | 25 天前3
 Comprehensive Rust(繁体中文)後,您應設定編輯器或 IDE,以便與 Rust 搭配使用。為此,大多數編輯器會與 rust-analyzer 通訊,後者提供適用於 VS Code、Emacs、Vim/Neovim 等的自動完成和跳至定義功能。此外,您也可以 使用稱做 RustRover 的不同 IDE。 • On Debian/Ubuntu, you can also install Cargo, the Rust source and 重要須知: 17 • Rust 的發布時程相當緊湊,每六週就會推出新版本。新版本可與舊版本回溯相容,且會啟用新功能。 • 發布版本 (release channel) 分為三種:「穩定版」、 「Beta 版」和「Nightly 版」。 • 「Nightly 版」會用於測試新功能, 「Beta 版」則會每六週成為「穩定版」。 • 您也可以透過其他註冊資料庫、git、資料夾等管道解析依附元件。 minutes Playground 2 minutes 4.1 什麼是 Rust? Rust 是一款新的程式設計語言,在 2015 年推出 1.0 版: • Rust 是靜態編譯的程式語言,功能與 C++ 類似 – rustc 使用 LLVM 做為後端。 • Rust 支援許多平台和架構: – x86、ARM、WebAssembly... – Linux、Mac、Windows...0 码力 | 358 页 | 1.41 MB | 10 月前3 Comprehensive Rust(繁体中文)後,您應設定編輯器或 IDE,以便與 Rust 搭配使用。為此,大多數編輯器會與 rust-analyzer 通訊,後者提供適用於 VS Code、Emacs、Vim/Neovim 等的自動完成和跳至定義功能。此外,您也可以 使用稱做 RustRover 的不同 IDE。 • On Debian/Ubuntu, you can also install Cargo, the Rust source and 重要須知: 17 • Rust 的發布時程相當緊湊,每六週就會推出新版本。新版本可與舊版本回溯相容,且會啟用新功能。 • 發布版本 (release channel) 分為三種:「穩定版」、 「Beta 版」和「Nightly 版」。 • 「Nightly 版」會用於測試新功能, 「Beta 版」則會每六週成為「穩定版」。 • 您也可以透過其他註冊資料庫、git、資料夾等管道解析依附元件。 minutes Playground 2 minutes 4.1 什麼是 Rust? Rust 是一款新的程式設計語言,在 2015 年推出 1.0 版: • Rust 是靜態編譯的程式語言,功能與 C++ 類似 – rustc 使用 LLVM 做為後端。 • Rust 支援許多平台和架構: – x86、ARM、WebAssembly... – Linux、Mac、Windows...0 码力 | 358 页 | 1.41 MB | 10 月前3
 Comprehensive Rust(繁体中文) 202406後,您應設定編輯器或 IDE,以便與 Rust 搭配使用。為此,大多數編輯器會與 rust-analyzer 通訊,後者提供適用於 VS Code、Emacs、Vim/Neovim 等的自動完成和跳至定義功能。此外,您也可以 使用稱做 RustRover 的不同 IDE。 • On Debian/Ubuntu, you can also install Cargo, the Rust source and 重要須知: 16 • Rust 的發布時程相當緊湊,每六週就會推出新版本。新版本可與舊版本回溯相容,且會啟用新功能。 • 發布版本 (release channel) 分為三種:「穩定版」、 「Beta 版」和「Nightly 版」。 • 「Nightly 版」會用於測試新功能, 「Beta 版」則會每六週成為「穩定版」。 • 您也可以透過其他註冊資料庫、git、資料夾等管道解析依附元件。 minutes Playground 2 minutes 4.1 什麼是 Rust? Rust 是一款新的程式設計語言,在 2015 年推出 1.0 版: • Rust 是靜態編譯的程式語言,功能與 C++ 類似 – rustc 使用 LLVM 做為後端。 • Rust 支援許多平台和架構: – x86、ARM、WebAssembly... – Linux、Mac、Windows...0 码力 | 356 页 | 1.41 MB | 1 年前3 Comprehensive Rust(繁体中文) 202406後,您應設定編輯器或 IDE,以便與 Rust 搭配使用。為此,大多數編輯器會與 rust-analyzer 通訊,後者提供適用於 VS Code、Emacs、Vim/Neovim 等的自動完成和跳至定義功能。此外,您也可以 使用稱做 RustRover 的不同 IDE。 • On Debian/Ubuntu, you can also install Cargo, the Rust source and 重要須知: 16 • Rust 的發布時程相當緊湊,每六週就會推出新版本。新版本可與舊版本回溯相容,且會啟用新功能。 • 發布版本 (release channel) 分為三種:「穩定版」、 「Beta 版」和「Nightly 版」。 • 「Nightly 版」會用於測試新功能, 「Beta 版」則會每六週成為「穩定版」。 • 您也可以透過其他註冊資料庫、git、資料夾等管道解析依附元件。 minutes Playground 2 minutes 4.1 什麼是 Rust? Rust 是一款新的程式設計語言,在 2015 年推出 1.0 版: • Rust 是靜態編譯的程式語言,功能與 C++ 類似 – rustc 使用 LLVM 做為後端。 • Rust 支援許多平台和架構: – x86、ARM、WebAssembly... – Linux、Mac、Windows...0 码力 | 356 页 | 1.41 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412之后,你应当配置你的编辑器或 IDE 以开始使用 Rust。大多数编辑器使用了 rust-analyzer。 它为 VS Code、Emacs、Vim/Neovim 及其他许多编辑器提供了自动补全及定义跳转的功能。同样也可 以使用 RustRover IDE。 • 在 Debian/Ubuntu 上,你也可以通过 apt 安装 Cargo、Rust 源代码和 Rust 格式化工具。但是, 这样会得到一个过时的 据需要让你在这些版本之间切换。 关键点: • Rust 有一个快速发布时间表,每六周就会发布一次新版本。新版本保持与旧版本的向后兼容性,并 添加新功能。 17 • 共有三个发布阶段:“稳定版(stable)”、 “测试版(beta)”和“夜间版(nightly)”。 • 新功能会先在“夜间版”上测试, “测试版”会每六周转为“稳定版”。 • 依赖关系也可以通过其他 registry、git 及文件夹等解析。 为免分割生态系统,Rust 编译器可以混合使用为不同版本编写的代码。 – 请注意,不借助 cargo 直接使用编译器的情况相当少见(大多数用户从不这样做)。 – 值得一提的是,Cargo 本身就是一个功能强大且全面的工具。它能够实现许多高级功能,包括 但不限于: * 项目/软件包结构 * 工作区 * 开发依赖和运行时依赖管理/缓存 * 构建脚本 * 全局安装 * 它还可以使用子命令插件(例如 cargo clippy)进行扩展。0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412之后,你应当配置你的编辑器或 IDE 以开始使用 Rust。大多数编辑器使用了 rust-analyzer。 它为 VS Code、Emacs、Vim/Neovim 及其他许多编辑器提供了自动补全及定义跳转的功能。同样也可 以使用 RustRover IDE。 • 在 Debian/Ubuntu 上,你也可以通过 apt 安装 Cargo、Rust 源代码和 Rust 格式化工具。但是, 这样会得到一个过时的 据需要让你在这些版本之间切换。 关键点: • Rust 有一个快速发布时间表,每六周就会发布一次新版本。新版本保持与旧版本的向后兼容性,并 添加新功能。 17 • 共有三个发布阶段:“稳定版(stable)”、 “测试版(beta)”和“夜间版(nightly)”。 • 新功能会先在“夜间版”上测试, “测试版”会每六周转为“稳定版”。 • 依赖关系也可以通过其他 registry、git 及文件夹等解析。 为免分割生态系统,Rust 编译器可以混合使用为不同版本编写的代码。 – 请注意,不借助 cargo 直接使用编译器的情况相当少见(大多数用户从不这样做)。 – 值得一提的是,Cargo 本身就是一个功能强大且全面的工具。它能够实现许多高级功能,包括 但不限于: * 项目/软件包结构 * 工作区 * 开发依赖和运行时依赖管理/缓存 * 构建脚本 * 全局安装 * 它还可以使用子命令插件(例如 cargo clippy)进行扩展。0 码力 | 359 页 | 1.33 MB | 10 月前3
 Rust 语言学习笔记对于 go 而言,不需要对这些东西进行了解,只需要下载包安装到环境变量中即 可。 而 rust 的开发中经常会遇到配置不同的 toolchain 等需求,因此官方开发了 rustup。rustup 功能如下: 1.管理安装多个官方版本的 Rust 二进制程序。 2.配置基于目录的 Rust 工具链。 3.安装和更新来自 Rust 的发布通道: nightly, beta 和 stable。 中条件判断必须是 bool 类型,不能写出 if 5 这种判断条件。 2.2.2 match 语句 Rust 中没有类似于 C 的 switch 关键字,但它有用于模式匹配的 match, 能实现同样的功能,并且强大太多。 match 的使用非常简单,举例如下: let x = 5; match x { 1 => { println!("one") } y.clone(); println!("{:?}", y); } 4.3.2 trait 与内置类型 内置类型如:i32, i64 等也可以添加 trait 实现,为其定制一些功能: trait HasArea { fn area(&self) -> f64; } impl HasArea for i32 { fn area(&self) ->0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记对于 go 而言,不需要对这些东西进行了解,只需要下载包安装到环境变量中即 可。 而 rust 的开发中经常会遇到配置不同的 toolchain 等需求,因此官方开发了 rustup。rustup 功能如下: 1.管理安装多个官方版本的 Rust 二进制程序。 2.配置基于目录的 Rust 工具链。 3.安装和更新来自 Rust 的发布通道: nightly, beta 和 stable。 中条件判断必须是 bool 类型,不能写出 if 5 这种判断条件。 2.2.2 match 语句 Rust 中没有类似于 C 的 switch 关键字,但它有用于模式匹配的 match, 能实现同样的功能,并且强大太多。 match 的使用非常简单,举例如下: let x = 5; match x { 1 => { println!("one") } y.clone(); println!("{:?}", y); } 4.3.2 trait 与内置类型 内置类型如:i32, i64 等也可以添加 trait 实现,为其定制一些功能: trait HasArea { fn area(&self) -> f64; } impl HasArea for i32 { fn area(&self) ->0 码力 | 117 页 | 2.24 MB | 1 年前3
 洛佳 组件化驱动、ROM运行环境与RustSBI基地址结合,高灵活性;一次开发,同时 复用于嵌入式、固件和内核中。 # 组件化驱动 合理利用嵌入式、桌面和服务器芯片片内 ROM代码,构造零开销的运行环境。进一 步地,可完成安全引导、安全镜像分发和 通常的嵌入式开发等功能。 # ROM运行环境 # 2023年的RustSBI 作为RISC-V SBI固件的RustSBI,2023年 将与UEFI、LinuxBoot擦出火花。在驱 动、环境和SBI接口的基础上,提供快速 组件化驱动的组成方法 寄 存 器 表 示 外 设 功 能 抽 象 功 能 成 熟 开 源 标 准 的 抽 象 设 计 适配embedded-hal等外设功能标准抽象 面 向 功 能 的 外 设 结 构 联合所有权、泛型等,暴露外设所有功能 外 设 及 其 寄 存 器 表 示 封装寄存器、位域表示和数据结构 分享性外设:以GPIO为例 • 从前级环境获取所有权,如从ROM 运行环境的#[entry]获得; 运行环境的#[entry]获得; • 配置GPIO状态后,只有对应外设类 型允许的操作函数能通过编译,否则 拒绝编译,避免不安全行为; • 开源标准抽象的功能,使用抽象规定 的调用方法。本芯片外设专属的功能 也可通过专有函数使用; • 用户代码简短易懂,容易编写和调 试,降低开发成本。 *BL808组件化驱动操作GPIO按钮和灯 组件化外设的分类和设计方法 通 用 连 接 外 设 U0 码力 | 21 页 | 3.12 MB | 1 年前3 洛佳 组件化驱动、ROM运行环境与RustSBI基地址结合,高灵活性;一次开发,同时 复用于嵌入式、固件和内核中。 # 组件化驱动 合理利用嵌入式、桌面和服务器芯片片内 ROM代码,构造零开销的运行环境。进一 步地,可完成安全引导、安全镜像分发和 通常的嵌入式开发等功能。 # ROM运行环境 # 2023年的RustSBI 作为RISC-V SBI固件的RustSBI,2023年 将与UEFI、LinuxBoot擦出火花。在驱 动、环境和SBI接口的基础上,提供快速 组件化驱动的组成方法 寄 存 器 表 示 外 设 功 能 抽 象 功 能 成 熟 开 源 标 准 的 抽 象 设 计 适配embedded-hal等外设功能标准抽象 面 向 功 能 的 外 设 结 构 联合所有权、泛型等,暴露外设所有功能 外 设 及 其 寄 存 器 表 示 封装寄存器、位域表示和数据结构 分享性外设:以GPIO为例 • 从前级环境获取所有权,如从ROM 运行环境的#[entry]获得; 运行环境的#[entry]获得; • 配置GPIO状态后,只有对应外设类 型允许的操作函数能通过编译,否则 拒绝编译,避免不安全行为; • 开源标准抽象的功能,使用抽象规定 的调用方法。本芯片外设专属的功能 也可通过专有函数使用; • 用户代码简短易懂,容易编写和调 试,降低开发成本。 *BL808组件化驱动操作GPIO按钮和灯 组件化外设的分类和设计方法 通 用 连 接 外 设 U0 码力 | 21 页 | 3.12 MB | 1 年前3
 WebAssembly 简介 - 陈思衡它现已在所有主流浏览器中实现,包括 Chrome、Firefox、Safari 和 Edge。 # 标准稳定 # 多语言支持 WebAssembly 设计为安全地嵌入到网页 中。它提供一种沙箱环境,禁止直接访问 浏览器功能或用户数据。而是需要通过 host function 来访问宿主环境。 # 安全性 现在多种语言都有编译器支持 WebAssembly,如 C/C++、Rust、Go、Zig 等。 WebAssembly WASI 简介 WebAssembly System Interface (简称 WASI),它定义了一组 WASM 模块可以调用的系统调用接口。WASI 的目的是让 WASM 模块可以访问底层系统的功能,比如文件系统、网络等。这使得 WASM 可以作为一个更广泛的 运行时,不仅仅局限于浏览器环境。WASI 当前定义了一组 POSIX 兼容的系统调用,让 WASM 模块可以访问文件系 统。未来 WASI Wasm 解决方案 wasmtime-fiber 是一个通过内联汇编,保存当前寄存 器和栈数据来实现有栈协程的 rust 库。 wasmtime-fiber Ucontext 和 fiber 功能相同,但是 linux 的系统库。 ucontext 执行流程 Async Wasm 解决方案 • 与 WASM 的语言无关。 • 可以复用 WASM 编写语言本身的生态。 • 不会对 WASM0 码力 | 24 页 | 773.46 KB | 1 年前3 WebAssembly 简介 - 陈思衡它现已在所有主流浏览器中实现,包括 Chrome、Firefox、Safari 和 Edge。 # 标准稳定 # 多语言支持 WebAssembly 设计为安全地嵌入到网页 中。它提供一种沙箱环境,禁止直接访问 浏览器功能或用户数据。而是需要通过 host function 来访问宿主环境。 # 安全性 现在多种语言都有编译器支持 WebAssembly,如 C/C++、Rust、Go、Zig 等。 WebAssembly WASI 简介 WebAssembly System Interface (简称 WASI),它定义了一组 WASM 模块可以调用的系统调用接口。WASI 的目的是让 WASM 模块可以访问底层系统的功能,比如文件系统、网络等。这使得 WASM 可以作为一个更广泛的 运行时,不仅仅局限于浏览器环境。WASI 当前定义了一组 POSIX 兼容的系统调用,让 WASM 模块可以访问文件系 统。未来 WASI Wasm 解决方案 wasmtime-fiber 是一个通过内联汇编,保存当前寄存 器和栈数据来实现有栈协程的 rust 库。 wasmtime-fiber Ucontext 和 fiber 功能相同,但是 linux 的系统库。 ucontext 执行流程 Async Wasm 解决方案 • 与 WASM 的语言无关。 • 可以复用 WASM 编写语言本身的生态。 • 不会对 WASM0 码力 | 24 页 | 773.46 KB | 1 年前3
 Rust在物理引擎研发中的应用 崔汉青AI生成 数据驱动 AI加速 云原生架构和 AI 能力 架构特点 性能特点 功能特点 云原生架构 单机架构 动作物理分离 跨平台确定性 动作物理统一 算力动态调配 分布式计算 物理材质统一解算 算法优化 物理材质单独解算 工程优化 性能待优化 AI仿真加速 前沿动作功能 缺乏动作功能 AI动作生成 优秀的易用性和适配性 缺乏AI能力 保证每个目标平台的极致性能 优 化,满足苛求性能的引擎研发需求; Rust 的零开销抽象甩掉了复杂设计的性能包袱 # 高性能 Rust 在不损耗性能的情况下,其优秀的语 法设计保证了语言的强大表达力:用更少 的代码写更多的功能 # 高表达力 # 安全 Rust 依靠 LLVM 实现了多目标平台,并可 以用语言内建的 target_feature 针对不同 的指令集进行处理 # 跨平台 Cargo 真的比 cmake0 码力 | 22 页 | 1.18 MB | 1 年前3 Rust在物理引擎研发中的应用 崔汉青AI生成 数据驱动 AI加速 云原生架构和 AI 能力 架构特点 性能特点 功能特点 云原生架构 单机架构 动作物理分离 跨平台确定性 动作物理统一 算力动态调配 分布式计算 物理材质统一解算 算法优化 物理材质单独解算 工程优化 性能待优化 AI仿真加速 前沿动作功能 缺乏动作功能 AI动作生成 优秀的易用性和适配性 缺乏AI能力 保证每个目标平台的极致性能 优 化,满足苛求性能的引擎研发需求; Rust 的零开销抽象甩掉了复杂设计的性能包袱 # 高性能 Rust 在不损耗性能的情况下,其优秀的语 法设计保证了语言的强大表达力:用更少 的代码写更多的功能 # 高表达力 # 安全 Rust 依靠 LLVM 实现了多目标平台,并可 以用语言内建的 target_feature 针对不同 的指令集进行处理 # 跨平台 Cargo 真的比 cmake0 码力 | 22 页 | 1.18 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 Rust 版淘寶訂單。購物者下單後,訂單將加入列列中,系統隨後會根據順序處理佇列中的訂單。在雙十一期 間,短時間內會產生海量訂單,高併發成為工程師們需要重點攻克的問題。 ‧ 各類待辦事項。任何需要實現“先來後到”功能的場景,例如印表機的任務佇列、餐廳的出餐佇列等, 佇列在這些場景中可以有效地維護處理順序。 5.3 雙向佇列 在佇列中,我們僅能刪除頭部元素或在尾部新增元素。如圖 5‑7 所示,雙向佇列(double‑ended 稱方向 的操作。為此,我們採用“雙向鏈結串列”作為雙向佇列的底層資料結構。 如圖 5‑8 所示,我們將雙向鏈結串列的頭節點和尾節點視為雙向佇列的佇列首和佇列尾,同時實現在兩端新 增和刪除節點的功能。 圖 5‑8 基於鏈結串列實現雙向佇列的入列出列操作 實現程式碼如下所示: 第 5 章 堆疊與佇列 www.hello‑algo.com 107 // === File: linkedlist_deque 所有應用場景,同時提供更高的自由度。 我們知道,軟體的“撤銷”功能通常使用堆疊來實現:系統將每次更改操作 push 到堆疊中,然後透過 pop 實 現撤銷。然而,考慮到系統資源的限制,軟體通常會限制撤銷的步數(例如僅允許儲存 50 步)。當堆疊的長 度超過 50 時,軟體需要在堆疊底(佇列首)執行刪除操作。但堆疊無法實現該功能,此時就需要使用雙向佇 列來替代堆疊。請注意,“撤銷”的核心邏輯0 码力 | 388 页 | 18.82 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Rust 版淘寶訂單。購物者下單後,訂單將加入列列中,系統隨後會根據順序處理佇列中的訂單。在雙十一期 間,短時間內會產生海量訂單,高併發成為工程師們需要重點攻克的問題。 ‧ 各類待辦事項。任何需要實現“先來後到”功能的場景,例如印表機的任務佇列、餐廳的出餐佇列等, 佇列在這些場景中可以有效地維護處理順序。 5.3 雙向佇列 在佇列中,我們僅能刪除頭部元素或在尾部新增元素。如圖 5‑7 所示,雙向佇列(double‑ended 稱方向 的操作。為此,我們採用“雙向鏈結串列”作為雙向佇列的底層資料結構。 如圖 5‑8 所示,我們將雙向鏈結串列的頭節點和尾節點視為雙向佇列的佇列首和佇列尾,同時實現在兩端新 增和刪除節點的功能。 圖 5‑8 基於鏈結串列實現雙向佇列的入列出列操作 實現程式碼如下所示: 第 5 章 堆疊與佇列 www.hello‑algo.com 107 // === File: linkedlist_deque 所有應用場景,同時提供更高的自由度。 我們知道,軟體的“撤銷”功能通常使用堆疊來實現:系統將每次更改操作 push 到堆疊中,然後透過 pop 實 現撤銷。然而,考慮到系統資源的限制,軟體通常會限制撤銷的步數(例如僅允許儲存 50 步)。當堆疊的長 度超過 50 時,軟體需要在堆疊底(佇列首)執行刪除操作。但堆疊無法實現該功能,此時就需要使用雙向佇 列來替代堆疊。請注意,“撤銷”的核心邏輯0 码力 | 388 页 | 18.82 MB | 10 月前3
共 24 条
- 1
- 2
- 3














