C言語の配列から要素を削除する方法

C言語の配列は固定長データ構造であり、一度宣言・初期化されると長さを変更することはできない。そのため、直接配列から要素を削除することはできない。しかし、削除したような効果を得るための方法として、削除したい要素を特定の目印となる値に置き換える方法や、後ろの要素を手前に詰める方法がある。

一般的な方法を 2 つ以下に示します。

  1. 削除する要素を特定のフラグ値に置換します
  2. 配列を走査して削除したい要素を見つけ、特定のマーカー値(-1、0など)に置き換えます。
  3. 非マーク値の要素を順番に配列の先頭に移動させるには、配列を反復処理します。
  4. 最後に、有効な要素の数を格納する変数を使用して、配列の長さを調整します。
  5. 後ろの要素を前に移動する
  6. 配列内を走査し、削除する要素の位置を探す。
  7. その位置以降の要素を一要素ずつ前へ詰める。
  8. 最後に、配列の長さを変更します(有効な要素の数を変数で記録できます)。

これらの方法には、ともにオーバーヘッドと空間コストがあり、配列の順序が変わる可能性があることに注意してください。要素の削除操作を頻繁に行う必要がある場合は、別のデータ構造(リンクリストなど)を使用することをお勧めします。

bannerAds