mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-04 19:54:20 +00:00
build
This commit is contained in:
@@ -340,12 +340,6 @@ comments: true
|
||||
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="deque.zig"
|
||||
|
||||
```
|
||||
|
||||
## 5.3.2 両端キューの実装 *
|
||||
|
||||
両端キューの実装は通常のキューの実装と似ており、連結リストまたは配列を基盤となるデータ構造として使用できます。
|
||||
@@ -845,14 +839,6 @@ comments: true
|
||||
[class]{LinkedListDeque}-[func]{}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="linkedlist_deque.zig"
|
||||
[class]{ListNode}-[func]{}
|
||||
|
||||
[class]{LinkedListDeque}-[func]{}
|
||||
```
|
||||
|
||||
### 2. 配列に基づく実装
|
||||
|
||||
下図に示すように、配列でキューを実装するのと同様に、循環配列を使って両端キューを実装することもできます。
|
||||
@@ -1245,12 +1231,6 @@ comments: true
|
||||
[class]{ArrayDeque}-[func]{}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="array_deque.zig"
|
||||
[class]{ArrayDeque}-[func]{}
|
||||
```
|
||||
|
||||
## 5.3.3 両端キューの応用
|
||||
|
||||
両端キューはスタックとキューの両方のロジックを組み合わせているため、**それぞれのすべてのユースケースを実装でき、より大きな柔軟性を提供します**。
|
||||
|
||||
@@ -318,12 +318,6 @@ comments: true
|
||||
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="queue.zig"
|
||||
|
||||
```
|
||||
|
||||
## 5.2.2 キューの実装
|
||||
|
||||
キューを実装するには、一方の端で要素を追加し、もう一方の端で要素を削除できるデータ構造が必要です。連結リストと配列の両方がこの要件を満たします。
|
||||
@@ -611,12 +605,6 @@ comments: true
|
||||
[class]{LinkedListQueue}-[func]{}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="linkedlist_queue.zig"
|
||||
[class]{LinkedListQueue}-[func]{}
|
||||
```
|
||||
|
||||
### 2. 配列ベースの実装
|
||||
|
||||
配列の最初の要素を削除する時間計算量は$O(n)$で、デキュー操作が非効率になります。しかし、この問題は以下のように巧妙に回避できます。
|
||||
@@ -915,12 +903,6 @@ comments: true
|
||||
[class]{ArrayQueue}-[func]{}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="array_queue.zig"
|
||||
[class]{ArrayQueue}-[func]{}
|
||||
```
|
||||
|
||||
上記のキュー実装にはまだ制限があります:長さが固定されています。しかし、この問題は解決が困難ではありません。配列を必要に応じて自動拡張できる動的配列に置き換えることができます。興味のある読者は自分で実装してみてください。
|
||||
|
||||
2つの実装の比較はスタックの場合と一貫しており、ここでは繰り返しません。
|
||||
|
||||
@@ -312,12 +312,6 @@ comments: true
|
||||
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="stack.zig"
|
||||
|
||||
```
|
||||
|
||||
## 5.1.2 スタックの実装
|
||||
|
||||
スタックがどのように動作するかをより深く理解するために、自分でスタッククラスを実装してみましょう。
|
||||
@@ -580,12 +574,6 @@ comments: true
|
||||
[class]{LinkedListStack}-[func]{}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="linkedlist_stack.zig"
|
||||
[class]{LinkedListStack}-[func]{}
|
||||
```
|
||||
|
||||
### 2. 配列ベースの実装
|
||||
|
||||
配列を使用してスタックを実装する場合、配列の末尾をスタックのトップと考えることができます。下図に示すように、プッシュとポップ操作は、それぞれ配列の末尾での要素の追加と削除に対応し、どちらも時間計算量$O(1)$です。
|
||||
@@ -795,12 +783,6 @@ comments: true
|
||||
[class]{ArrayStack}-[func]{}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="array_stack.zig"
|
||||
[class]{ArrayStack}-[func]{}
|
||||
```
|
||||
|
||||
## 5.1.3 2つの実装の比較
|
||||
|
||||
**サポートされる操作**
|
||||
|
||||
Reference in New Issue
Block a user