単方向連結リストの基本操作とC言語による実装

連続しないメモリ領域にデータを格納するため、順序付きリスト(配列)の挿入・削除における線形コストを回避する方法として、連結リストが用いられる。 連結リストは、メモリ上で連続しない複数の構造体から構成され、各構造体はデータ要素と次の要素へのポインタ(next)を持つ。末尾の要素のnextはNULLとなる。 単方向連結リストは、各ノードが1つのポインタのみを持つ ...

7月12日 21:04 投稿

連結リストの基本操作:要素削除、カスタム設計、反転処理

連結リストの要素削除 例:入力:head = [1,2,6,3,4,5,6], val = 6 出力:[1,2,3,4,5] 連結リストの設計 連結リストクラスで以下の機能を実装します: get(index):連結リストのindex番目のノードの値を取得します。インデックスが無効な場合は-1を返します。 addAtHead(val):連結リストの最初の要素の前に値がvalのノードを追加します。挿入後、新しいノードが連結リ ...

7月12日 18:07 投稿

重み付き木の分割処理

木構造の分割処理 基本概念 木の分割処理:木構造を複数の非交差チェーンに分割する手法で、主に重み付きチェーン分割を用いる。以下の操作をサポート: ノードxからノードyまでの最短経路上の全ノードの値の更新 ノードxからノードyまでの最短経路上の全ノード値の合計取得 ノードxとその部分木の値の更新 ノードxとその部分木の値の合計取得 重み付き子ノード:ノ ...

7月11日 23:30 投稿

C言語で学ぶ二分木の基礎と応用

二分木の基本的な操作 二分木は、各ノードが最大2つの子ノードを持つ木構造です。この記事では、C言語を用いて二分木の作成、走査、特性の計算、および部分木の交換といった基本的な操作を実装する方法を学びます。 ノードの定義 二分木の各ノードは、データと左右の子ノードへのポインタを持ちます。以下にその構造体を示します。 struct Node { char data; str ...

7月11日 20:42 投稿

红包分配システムの実装とソート処理

問題概要 N人の参加者間での紅包(お年玉)の分配記録を処理し、各人の収支を計算するプログラムを作成します。入力データから各人の収入金額、支出金額、獲得紅包数を算出し、指定された条件でソートして出力します。 入力形式 最初の行には参加者数N(≤104)が与えられます。続くN行には、各参加者が発行した紅包の情報が以下の形式で記述されます: K N1 P1 N2 P2 ... ...

7月11日 16:44 投稿

線形リストにおける配列ベースの実装

1. 線形リストの基本概念 線形リストはデータ構造の基本要素であり、順序を持ったデータ要素の有限列です。主に配列で実装される「配列ベースリスト」とポインタで実装される「連結リスト」の2種類があります。 特徴: 配列ベースリスト:ランダムアクセスが高速 連結リスト:挿入・削除操作が容易 2. 配列による実装の構造 連続したメモリ領域を使って要素を格納し ...

7月10日 17:49 投稿

C言語による主要なソートアルゴリズムの実装と解説

開発環境とコード規約 本記事で紹介するコードは、C言語標準規格(C99以降)を想定しており、 Visual Studio 2022などの主要な開発環境で動作します。可読性と保守性を向上させるため、変数名は論理的な意味を持つようにリファクタリングし、標準的な型定義を使用しています。 挿入ソート (Insertion Sort) 挿入ソートは、手札のトランプを整理するように、整列済みの部分 ...

7月9日 21:10 投稿

JavaScriptの配列の基礎と内部動作

配列の概要 従来のデータ型は単一値の保存に限定されますが、複数値を扱う場合には配列が効果的です。 配列の基本概念 配列(Array)は組み込みオブジェクトであり、値の保存機能では通常のオブジェクトと類似しています。重要な差異点: 通常オブジェクト:文字列をプロパティ名として使用 配列:数値インデックスによる要素操作(0起点の整数インデックス) 配列は特 ...

7月9日 20:30 投稿

C言語での単方向リスト:先頭へのノード挿入実装

連結リストのノード構造体定義 C言語における単方向リストの各要素は、データを保持するフィールドと、次の要素へのメモリアドレスを持つ構造体として定義されます。 typedef struct ListItem { int value; struct ListItem* link; } ListItem; リスト先頭へのノード挿入ロジック リストを新規作成する際、最初は要素が存在しないため、先頭ポインタはNULLを指し ...

7月9日 00:46 投稿

データ構造とアルゴリズム - ハッシュテーブル

1. ハッシュテーブルの基本概念 順序リストや木構造では、データ要素を検索する際にキーの比較を繰り返す必要があります。比較回数を減らすためには、データ要素の格納位置とキーの値の間に関連性を確立する必要があります。この目的のために、ハッシュ技術を用いた動的検索表が使用されます。まず、いくつかの基本概念を理解しましょう。 ハッシュ関数:データ要素のキー ...

7月8日 23:35 投稿