データ構造の基礎:配列、リンクリスト、スタック、キューの実装

配列(シーケンシャルリスト) 配列は連続したメモリ領域にデータを格納するデータ構造です。C言語環境では、名前付きのスタック配列または匿名のヒープ配列として実装できます。 配列の設計 配列を操作しやすくするために、専用の「管理構造体」が必要です。この構造体には通常以下の要素が含まれます: 配列の総容量 現在の最後の要素のインデックス位置 配列へのポイ ...

5月23日 18:40 投稿

LeetCode 203: リンクリストから指定された値を持つノードを削除する

問題 この問題では、リンクリストの先頭ノード head と整数 val が与えられます。リンクリストから Node.val == val を満たす全てのノードを削除し、新しい先頭ノードを返します。 例1: 入力: head = [1,2,6,3,4,5,6], val = 6 出力: [1,2,3,4,5] 例2: 入力: head = [], val = 1 出力: [] 例3: 入力: head = [7,7,7,7], val = 7 出力: [] 制約: リスト内の ...

5月23日 02:08 投稿

リンクリスト操作の実践:ノード交換、削除、交点検出、循環検出

リンクリストのノード交換 反復解法 ListNode* swapPairs(ListNode* head) { if(!head || !head->next) return head; ListNode dummy(0); dummy.next = head; ListNode* prev = &dummy; ListNode* curr = head; while(curr && curr->next) { ListNode* nextNode = curr->next; // ノード交換 prev->n ...

5月20日 14:29 投稿

リンクリストの要素削除、設計、および逆転

Leetcode - 203 リンクリストの要素削除 この問題のシンプルな解決法は、削除する要素の位置を判断し、2つの場合を分けることです。削除する要素が先頭であるか、そうでないかです。先頭削除の場合は、一時的なポインタを作成し、頭のポインタを更新します。非先頭削除の場合は、前後の要素を連結します。 /** * Definition for singly-linked list. * struct ListNode { ...

5月19日 19:51 投稿

C言語を用いたWindowsコンソール版スネークゲームの実装手順

Windowsプラットフォーム上で標準ライブラリとWin32 APIを活用し、コンソール画面に表示されるスネークゲームを作成する方法を解説します。本手法はGUIフレームワークに依存しないため、リソース消費が小さく、アルゴリズムの理解やシステムコールの学習に適しています。 データ構造と状態管理 蛇の本体は単方向連結リストで管理します。各ノードは現在地座標と次ノードへ ...

5月13日 12:03 投稿