Add Zig code blocks.

This commit is contained in:
Yudong Jin
2023-02-01 22:03:04 +08:00
parent 6cd6d5589e
commit 7ce7386bab
25 changed files with 599 additions and 0 deletions

View File

@@ -256,6 +256,12 @@ comments: true
let isEmpty = queue.isEmpty
```
=== "Zig"
```zig title="queue.zig"
```
## 5.2.2. 队列实现
队列需要一种可以在一端添加,并在另一端删除的数据结构,也可以使用链表或数组来实现。
@@ -719,6 +725,12 @@ comments: true
}
```
=== "Zig"
```zig title="linkedlist_queue.zig"
```
### 基于数组的实现
数组的删除首元素的时间复杂度为 $O(n)$ ,因此不适合直接用来实现队列。然而,我们可以借助两个指针 `front` , `rear` 来分别记录队首和队尾的索引位置,在入队 / 出队时分别将 `front` / `rear` 向后移动一位即可,这样每次仅需操作一个元素,时间复杂度降至 $O(1)$ 。
@@ -1241,6 +1253,12 @@ comments: true
}
```
=== "Zig"
```zig title="array_queue.zig"
```
以上代码仍存在局限性,即长度不可变。然而,我们可以通过将数组替换为列表(即动态数组)来引入扩容机制,有兴趣的同学可以尝试实现。
## 5.2.3. 两种实现对比