From bd1650edf9f9de2ac79c2ac6baff444ff147996f Mon Sep 17 00:00:00 2001 From: Xu Shaohua Date: Thu, 1 Aug 2024 17:22:01 +0800 Subject: [PATCH] stack: Update impl of stack --- src/stack/assets/vec_stack.rs | 1 + src/stack/basic-ops.md | 2 ++ src/stack/impl-of-stack.md | 12 +++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 120000 src/stack/assets/vec_stack.rs diff --git a/src/stack/assets/vec_stack.rs b/src/stack/assets/vec_stack.rs new file mode 120000 index 00000000..ff524efe --- /dev/null +++ b/src/stack/assets/vec_stack.rs @@ -0,0 +1 @@ +../../../stack/src/vec_stack.rs \ No newline at end of file diff --git a/src/stack/basic-ops.md b/src/stack/basic-ops.md index 6df36ecc..8d2d7c04 100644 --- a/src/stack/basic-ops.md +++ b/src/stack/basic-ops.md @@ -19,6 +19,8 @@ ![stack push](assets/stack-push.svg) +如果是动态栈, 不受容量限制, 那这个函数就没有返回值, 也不存在栈满的问题. + ## 出栈 pop() 元素出栈顺序跟其入栈顺序是相反的. diff --git a/src/stack/impl-of-stack.md b/src/stack/impl-of-stack.md index 65c0429a..f6b9ad58 100644 --- a/src/stack/impl-of-stack.md +++ b/src/stack/impl-of-stack.md @@ -16,4 +16,14 @@ ## 使用动态数组 Vec 实现动态栈 -## 使用链表实现动态栈 \ No newline at end of file +使用 `Vec` 实现的栈可以进行动态扩容, 但每次扩容时可能要进行内存的批量拷贝. + +这个比较简单, 因为 `Vec` 本身就实现了基本的栈操作接口, 我们只需要再包装一下就行: + +```rust +{{#include assets/vec_stack.rs:5:70}} +``` + +## 使用链表实现动态栈 + +TODO(Shaohua): \ No newline at end of file