線形リストの主要機能
1. データ格納とアクセス
線形リストはデータを順序通りに格納し、効率的な組織化と管理を可能にします。インデックスを使用することでデータ要素への高速アクセスが実現されます。
2. データ挿入と削除
任意の位置へのデータ要素の挿入・削除操作をサポートします。これによりデータの更新や修正が容易になります。
3. データ検索
インデックスによる位置指定や値に基づく検索が可能で、効率的なデータアクセスを提供します。
4. データソートと結合
データの並べ替えや複数リストの結合操作が簡単に行えます。
線形リストの特性
- 連続したメモリ領域を使用するためアクセス効率が高い
- 任意のデータ型(整数、文字、構造体など)を格納可能
- 要素の順序が保持されるため検索・挿入・削除操作が効率的
線形リストの実装方法
必要な基本操作
- 初期化:空の構造体を作成
- 破棄:使用後に構造体を解放
- 表示:画面出力用関数
- 挿入:指定位置に要素追加
- 削除:指定位置の要素除去
- 検索:値/位置による要素探索
- 更新:位置指定による値変更
ファイル構成
3つのファイル(2つの.cファイルと1つの.hファイル)を作成します。
// データ型の定義(変更可能)
typedef int ListElementType;
// 線形リスト構造体
typedef struct LinearList {
ListElementType* dataArray; // データ配列
int elementCount; // 有効要素数
int arrayCapacity; // 配列容量
} LinearList;
初期化関数の実装例:
void InitList(LinearList* list) {
assert(list != NULL);
list->dataArray = NULL;
list->elementCount = 0;
list->arrayCapacity = 0;
}
破棄関数の実装例:
void DestroyList(LinearList* list) {
if (list->dataArray != NULL) {
free(list->dataArray);
list->dataArray = NULL;
}
list->arrayCapacity = 0;
list->elementCount = 0;
}