Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で配列の任意の位置に要素を挿入する方法

C言語では、配列の好きな位置に要素を挿入できます。つまり、先頭・中間・末尾など、配列内のどの場所にも自由に挿入することが可能です。

ただし、要素を挿入した後に各要素の位置(インデックス)は後ろへずれますが、これは配列そのもののサイズが大きくなることを意味するわけではない点に注意しましょう。あらかじめ確保しておいた領域の範囲内で、既存の要素を後ろに移動させて空きを作り、そこに新しい値を書き込むという仕組みです。

要素挿入の基本的なロジック

  • 配列のサイズ(要素数)を入力する
  • 要素を挿入したい位置を入力する
  • その位置に挿入する値を入力する

実際の挿入処理は、以下のように後ろから順に要素を1つずつ右へシフトさせることで実現します。

for(i=size-1;i>=pos-1;i--)
    student[i+1]=student[i];
    student[pos-1]= value;

このループにより、挿入位置以降の要素がすべて後ろに移動し、指定した位置に新しい値が書き込まれます。最後に、forループを使って挿入後の配列全体を出力します。

プログラム例

#include<stdio.h>
int main(){
    int student[40],pos,i,size,value;
    printf("enter no of elements in array of students:");
    scanf("%d",&size);
    printf("enter %d elements are:\n",size);
    for(i=0;i<size;i++)
        scanf("%d",&student[i]);
    printf("enter the position where you want to insert the element:");
    scanf("%d",&pos);
    printf("enter the value into that poition:");
    scanf("%d",&value);
    for(i=size-1;i>=pos-1;i--)
        student[i+1]=student[i];
    student[pos-1]= value;
    printf("final array after inserting the value is\n");
    for(i=0;i<=size;i++)
        printf("%d\n",student[i]);
    return 0;
}

実行結果

enter no of elements in array of students:6
enter 6 elements are:
12
23
34
45
56
67
enter the position where you want to insert the element:3
enter the value into that poition:48
final array after inserting the value is
12
23
48
34
45
56
67

この実行例では、6個の要素を持つ配列の3番目の位置に「48」を挿入しています。3番目以降の要素(34、45、56、67)がそれぞれ1つ後ろにずれ、新しい配列は7個の要素として出力されていることが確認できます。

  1. C言語で学ぶリンクリスト(連結リスト)への要素挿入の基本と実装方法

    リンクリスト(連結リスト)は、動的メモリ確保を利用するデータ構造です。そのため、要素の追加や削除に応じて、リストのサイズが柔軟に伸縮します。リンクリストは「ノード」と呼ばれる要素の集合体として定義され、各ノードはデータ部とリンク部(ポインタ)の2つの部分で構成されています。データ・リンク・リンクリスト全体の構造は、以下のように表現されます。リンクリストに対する主な操作C言語において、リンクリストに対して行える基本的な操作は主に次の3種類です。挿入(Insertion)削除(Deletion)走査(Traversing)挿入操作のポイントここでは、ノード2とノード3の間に新しいノード5を挿入する

  2. C言語で配列の重複を削除し、ソート済みの一意な要素を出力する方法

    整数型の要素を持つ配列が与えられたとき、重複する値を取り除き、一意な(distinct)要素だけをソートして出力するのが本記事の目的です。例として、次のような整数値を格納した配列を考えてみましょう。4, 6, 5, 3, 4, 5, 2, 8, 7, 0この配列を単純にソートすると「0, 2, 3, 4, 4, 5, 5, 6, 7, 8」となりますが、この結果にはまだ重複値である 4 と 5 が含まれています。これらを削除し、最終的な出力結果は次のようになります。0, 2, 3, 4, 5, 6, 7, 8入力と出力の例Input: array[] = {4, 6, 5, 3, 4, 5,