mirror of
https://github.com/krahets/hello-algo.git
synced 2025-12-19 07:17:54 +08:00
Number the H1 and H2 headings.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 栈
|
||||
# 5.1. 栈
|
||||
|
||||
「栈 Stack」是一种遵循「先入后出 first in, last out」数据操作规则的线性数据结构。我们可以将栈类比为放在桌面上的一摞盘子,如果需要拿出底部的盘子,则需要先将上面的盘子依次取出。
|
||||
|
||||
@@ -14,7 +14,7 @@ comments: true
|
||||
|
||||
<p align="center"> Fig. 栈的先入后出特性 </p>
|
||||
|
||||
## 栈常用操作
|
||||
## 5.1.1. 栈常用操作
|
||||
|
||||
栈的常用操作见下表(方法命名以 Java 为例)。
|
||||
|
||||
@@ -255,7 +255,7 @@ comments: true
|
||||
let isEmpty = stack.isEmpty
|
||||
```
|
||||
|
||||
## 栈的实现
|
||||
## 5.1.2. 栈的实现
|
||||
|
||||
为了更加清晰地了解栈的运行机制,接下来我们来自己动手实现一个栈类。
|
||||
|
||||
@@ -1023,7 +1023,7 @@ comments: true
|
||||
}
|
||||
```
|
||||
|
||||
## 两种实现对比
|
||||
## 5.1.3. 两种实现对比
|
||||
|
||||
### 支持操作
|
||||
|
||||
@@ -1048,7 +1048,7 @@ comments: true
|
||||
|
||||
综上,我们不能简单地确定哪种实现更加省内存,需要 case-by-case 地分析。
|
||||
|
||||
## 栈典型应用
|
||||
## 5.1.4. 栈典型应用
|
||||
|
||||
- **浏览器中的后退与前进、软件中的撤销与反撤销**。每当我们打开新的网页,浏览器就将上一个网页执行入栈,这样我们就可以通过「后退」操作来回到上一页面,后退操作实际上是在执行出栈。如果要同时支持后退和前进,那么则需要两个栈来配合实现。
|
||||
- **程序内存管理**。每当调用函数时,系统就会在栈顶添加一个栈帧,用来记录函数的上下文信息。在递归函数中,向下递推会不断执行入栈,向上回溯阶段时出栈。
|
||||
|
||||
Reference in New Issue
Block a user