mirror of
https://github.com/krahets/hello-algo.git
synced 2026-02-11 22:55:39 +08:00
build
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 5.1. 栈
|
||||
# 5.1 栈
|
||||
|
||||
「栈 Stack」是一种遵循先入后出(First In, Last Out)原则的线性数据结构。
|
||||
|
||||
@@ -14,7 +14,7 @@ comments: true
|
||||
|
||||
<p align="center"> 图:栈的先入后出规则 </p>
|
||||
|
||||
## 5.1.1. 栈常用操作
|
||||
## 5.1.1 栈常用操作
|
||||
|
||||
栈的常用操作如下表所示,具体的方法名需要根据所使用的编程语言来确定。在此,我们以常见的 `push()` , `pop()` , `peek()` 命名为例。
|
||||
<p align="center"> 表:栈的操作效率 </p>
|
||||
@@ -290,7 +290,7 @@ comments: true
|
||||
|
||||
```
|
||||
|
||||
## 5.1.2. 栈的实现
|
||||
## 5.1.2 栈的实现
|
||||
|
||||
为了深入了解栈的运行机制,我们来尝试自己实现一个栈类。
|
||||
|
||||
@@ -1672,7 +1672,7 @@ comments: true
|
||||
}
|
||||
```
|
||||
|
||||
## 5.1.3. 两种实现对比
|
||||
## 5.1.3 两种实现对比
|
||||
|
||||
### 支持操作
|
||||
|
||||
@@ -1697,7 +1697,7 @@ comments: true
|
||||
|
||||
综上,我们不能简单地确定哪种实现更加节省内存,需要针对具体情况进行分析。
|
||||
|
||||
## 5.1.4. 栈典型应用
|
||||
## 5.1.4 栈典型应用
|
||||
|
||||
- **浏览器中的后退与前进、软件中的撤销与反撤销**。每当我们打开新的网页,浏览器就会将上一个网页执行入栈,这样我们就可以通过「后退」操作回到上一页面。后退操作实际上是在执行出栈。如果要同时支持后退和前进,那么需要两个栈来配合实现。
|
||||
- **程序内存管理**。每次调用函数时,系统都会在栈顶添加一个栈帧,用于记录函数的上下文信息。在递归函数中,向下递推阶段会不断执行入栈操作,而向上回溯阶段则会执行出栈操作。
|
||||
|
||||
Reference in New Issue
Block a user