Remove incomplete zig code from docs. (#1837)

This commit is contained in:
Yudong Jin
2025-12-31 19:47:59 +08:00
committed by GitHub
parent 2778a6f9c7
commit 10f76bd59a
68 changed files with 0 additions and 1343 deletions
@@ -116,14 +116,6 @@
```
=== "Zig"
```zig title="array.zig"
// 配列を初期化
var arr = [_]i32{0} ** 5; // { 0, 0, 0, 0, 0 }
var nums = [_]i32{ 1, 3, 2, 5, 4 };
```
### 要素へのアクセス
配列内の要素は連続したメモリ空間に格納されるため、各要素のメモリアドレスを計算することが簡単になります。以下の図に示されている公式は、配列のメモリアドレス(特に、最初の要素のアドレス)と要素のインデックスを利用して、要素のメモリアドレスを決定するのに役立ちます。この計算により、目的の要素への直接アクセスが合理化されます。
@@ -165,26 +165,6 @@
```
=== "Zig"
```zig title=""
// 連結リストノードクラス
pub fn ListNode(comptime T: type) type {
return struct {
const Self = @This();
val: T = 0, // ノード値
next: ?*Self = null, // 次のノードへのポインタ
// コンストラクタ
pub fn init(self: *Self, x: i32) void {
self.val = x;
self.next = null;
}
};
}
```
## 連結リストの一般的な操作
### 連結リストの初期化
@@ -385,23 +365,6 @@
```
=== "Zig"
```zig title="linked_list.zig"
// 連結リストを初期化
// 各ノードを初期化
var n0 = inc.ListNode(i32){.val = 1};
var n1 = inc.ListNode(i32){.val = 3};
var n2 = inc.ListNode(i32){.val = 2};
var n3 = inc.ListNode(i32){.val = 5};
var n4 = inc.ListNode(i32){.val = 4};
// ノード間の参照を構築
n0.next = &n1;
n1.next = &n2;
n2.next = &n3;
n3.next = &n4;
```
配列全体は1つの変数です。例えば、配列`nums`には`nums[0]`、`nums[1]`などの要素が含まれますが、連結リストは複数の異なるノードオブジェクトで構成されています。**通常、連結リストはそのヘッドノードで参照されます**。例えば、前のコードスニペットの連結リストは`n0`として参照されます。
### ノードの挿入
@@ -642,28 +605,6 @@
```
=== "Zig"
```zig title=""
// 双方向連結リストノードクラス
pub fn ListNode(comptime T: type) type {
return struct {
const Self = @This();
val: T = 0, // ノード値
next: ?*Self = null, // 後続ノードへのポインタ
prev: ?*Self = null, // 前任ノードへのポインタ
// コンストラクタ
pub fn init(self: *Self, x: i32) void {
self.val = x;
self.next = null;
self.prev = null;
}
};
}
```
![連結リストの一般的な種類](linked_list.assets/linkedlist_common_types.png)
## 連結リストの典型的な応用
@@ -132,15 +132,6 @@
```
=== "Zig"
```zig title="list.zig"
// リストを初期化
var nums = std.ArrayList(i32).init(std.heap.page_allocator);
defer nums.deinit();
try nums.appendSlice(&[_]i32{ 1, 3, 2, 5, 4 });
```
### 要素へのアクセス
リストは本質的に配列であるため、$O(1)$時間で要素にアクセスし更新することができ、非常に効率的です。
@@ -256,16 +247,6 @@
```
=== "Zig"
```zig title="list.zig"
// 要素にアクセス
var num = nums.items[1]; // インデックス1の要素にアクセス
// 要素を更新
nums.items[1] = 0; // インデックス1の要素を0に更新
```
### 要素の挿入と削除
配列と比較して、リストは要素の追加と削除においてより柔軟性を提供します。リストの末尾への要素追加は$O(1)$操作ですが、リストの他の場所での要素の挿入と削除の効率は配列と同じままで、時間計算量は$O(n)$です。
@@ -482,26 +463,6 @@
```
=== "Zig"
```zig title="list.zig"
// リストをクリア
nums.clearRetainingCapacity();
// 末尾に要素を追加
try nums.append(1);
try nums.append(3);
try nums.append(2);
try nums.append(5);
try nums.append(4);
// 中間に要素を挿入
try nums.insert(3, 6); // インデックス3に数値6を挿入
// 要素を削除
_ = nums.orderedRemove(3); // インデックス3の要素を削除
```
### リストの反復
配列と同様に、リストはインデックスを使用して反復することも、各要素を直接反復することもできます。
@@ -674,23 +635,6 @@
```
=== "Zig"
```zig title="list.zig"
// インデックスでリストを反復
var count: i32 = 0;
var i: i32 = 0;
while (i < nums.items.len) : (i += 1) {
count += nums[i];
}
// リスト要素を直接反復
count = 0;
for (nums.items) |num| {
count += num;
}
```
### リストの連結
新しいリスト`nums1`が与えられたとき、それを元のリストの末尾に追加できます。
@@ -788,16 +732,6 @@
```
=== "Zig"
```zig title="list.zig"
// 2つのリストを連結
var nums1 = std.ArrayList(i32).init(std.heap.page_allocator);
defer nums1.deinit();
try nums1.appendSlice(&[_]i32{ 6, 8, 7, 10, 9 });
try nums.insertSlice(nums.items.len, nums1.items); // nums1をnumsの末尾に連結
```
### リストのソート
リストがソートされると、「二分探索」や「双ポインタ」アルゴリズムなど、配列関連のアルゴリズム問題でよく使用されるアルゴリズムを使用できます。
@@ -884,13 +818,6 @@
```
=== "Zig"
```zig title="list.zig"
// リストをソート
std.sort.sort(i32, nums.items, {}, comptime std.sort.asc(i32));
```
## リストの実装
多くのプログラミング言語には、Java、C++、Pythonなどを含む組み込みリストが付属しています。それらの実装は、初期容量や拡張係数などの様々なパラメータを慎重に考慮した設定で、複雑になりがちです。興味のある読者は、さらなる学習のためにソースコードを調べることができます。