Number the H1 and H2 headings.

This commit is contained in:
Yudong Jin
2023-01-31 03:37:50 +08:00
parent dbbc1adc4f
commit eb0afc98ec
44 changed files with 263 additions and 257 deletions

View File

@@ -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. 栈典型应用
- **浏览器中的后退与前进、软件中的撤销与反撤销**。每当我们打开新的网页,浏览器就将上一个网页执行入栈,这样我们就可以通过「后退」操作来回到上一页面,后退操作实际上是在执行出栈。如果要同时支持后退和前进,那么则需要两个栈来配合实现。
- **程序内存管理**。每当调用函数时,系统就会在栈顶添加一个栈帧,用来记录函数的上下文信息。在递归函数中,向下递推会不断执行入栈,向上回溯阶段时出栈。