C言語の配列から要素を削除する方法
C言語の配列は固定長データ構造であり、一度宣言・初期化されると長さを変更することはできない。そのため、直接配列から要素を削除することはできない。しかし、削除したような効果を得るための方法として、削除したい要素を特定の目印となる値に置き換える方法や、後ろの要素を手前に詰める方法がある。
一般的な方法を 2 つ以下に示します。
- 削除する要素を特定のフラグ値に置換します
- 配列を走査して削除したい要素を見つけ、特定のマーカー値(-1、0など)に置き換えます。
- 非マーク値の要素を順番に配列の先頭に移動させるには、配列を反復処理します。
- 最後に、有効な要素の数を格納する変数を使用して、配列の長さを調整します。
- 後ろの要素を前に移動する
- 配列内を走査し、削除する要素の位置を探す。
- その位置以降の要素を一要素ずつ前へ詰める。
- 最後に、配列の長さを変更します(有効な要素の数を変数で記録できます)。
これらの方法には、ともにオーバーヘッドと空間コストがあり、配列の順序が変わる可能性があることに注意してください。要素の削除操作を頻繁に行う必要がある場合は、別のデータ構造(リンクリストなど)を使用することをお勧めします。