C言語配列の追加と削除の実現


配列は要素の挿入(追加)と削除が苦手です。配列の利点は連続的なので、データの検索速度が速いことにある。しかし、これも欠点の一つです。連続しているので、要素を挿入すると、点を挿入した後にすべての要素が後ろに移動します。要素を削除すると、ポイントを削除したすべての要素が前に移動します。
アルゴリズムを挿入

# include <stdio.h>
int main(void)
{
  int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7, 215};
  int b[24]; //             ,          ,      24
  int Index; //      , Index “  ”     
  int num; //    
  int i; //    
  printf("         :");
  scanf("%d", &Index);
  printf("        :");
  scanf("%d", &num);
  for (i=0; i<24; ++i)
  {
    if (i < Index)
    {
      b[i] = a[i]; /*    i       Index ,             */
    }
    else if (i == Index)
    {  
      b[i] = num; //i  Index ,         b
    }
    else
    {
      b[i] = a[i-1]; /*           ,                           */
    }
  }
  for (i=0; i<24; ++i)
  {
    printf("%d\x20", b[i]);
  }
  printf("
"); return 0; }
出力結果は:
挿入値の下付き文字を入力してください。10挿入値を入力してください。22
1 5 66 8 55 9 1 32 65 4 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 1 8 7 215。
アルゴリズムを削除

# include <stdio.h>
int main(void)
{
  int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7, 215};
  int b[22]; /*             ,         ,      22*/
  int Index; //        
  int i; //    
  printf("           :");
  scanf("%d", &Index);
  for (i=0; i<23; ++i)
  {
    if (i < Index)
    {
      b[i] = a[i]; /*    i       Index ,              */
    }
    else
    {
      b[i] = a[i+1]; /*              ,           */
    }
  }
  for (i=0; i<22; ++i)
  {
    printf("%d\x20", b[i]); // \x20    
  }
  printf("
"); return 0; }
出力結果は:
削除する値の下付きを入力してください。
1 5 66 8 55 1 32 65 4 6 6 6 6 6 6 6 6 6 6 6 6 6 1 8 8 7 215。
実例
37,49,51,61。設計プログラムは配列中のデータに対して一回の削除と挿入操作を実現します。
キーボード入力をgetch ar関数で受信します。
●文字'D'を入力すると、受信キーボードは1つの配列の中に存在する整数nを入力し、配列中に存在するこの整数を削除します。削除後の配列の各要素はまだ小さい順に並べられています。
要求:発泡法または選択法を使用しないで、データを削除した後のソート操作を実現します。
●文字'I'を入力すると、受信キーボードは配列に存在しない整数mを入力し、その整数mを配列に挿入し、挿入を要求する配列の各要素はまだ小さい順に配列されている。
要求:発泡法または選択法を使用しないで、データを挿入した後のソート操作を実現します。
サンプル入出力:
配列並べ替えの結果は、5,9,11,16,24,34,37,49,51,61
必要な操作(「I」挿入、「D」削除)を入力してください。
削除する整数を入力してください。9
削除された配列は5,11,16,24,34,37,49,51,61です。
必要な操作(「I」挿入、「D」削除)を入力してください。I
挿入する整数を入力してください。13
挿入された配列は5,11,13,16,24,34,37,49,51,61です。

#include <stdio.h>

int main()
{
 int a[10] = { 5, 9, 11, 16, 24, 34, 37, 49, 51, 61 };
 int i = 0,n=0,k=0;
 char get;
 
 for (i = 0; i < 10; i++)
  printf("%3d", a[i]);
 printf("
"); printf(" ( ‘I', ‘D')
"); get = getchar(); getchar(); if (get=='D') { printf(" :
"); n = getchar(); getchar(); n -= 48; for (i = 0; i < 10; i++) { if (a[i]==n) { for (; i < 10; i++) { a[i] = a[i + 1]; } a[9] = 0; break; } } for (i = 0; i < 9; i++) printf("%3d", a[i]); printf("
"); } printf(" ( ‘I', ‘D')
"); get = getchar(); getchar(); if (get='I') { printf(" :
"); scanf_s("%d", &n); // , getchar(), 13 , ,n ‘1', scanf_s(). for (i = 0; i < 10; i++) { if (a[i] < n&&n < a[i + 1]) { k = i; for (i = 8; i > k; i--) { a[i+1] = a[i]; } a[k+1] = n; break; } } for (i = 0; i < 10; i++) printf("%3d", a[i]); } return 0; }
ここでC言語配列の追加と削除の実現についての文章を紹介します。より多くの関連C言語配列の追加と削除要素の内容を紹介します。私達の以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。