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

C++プログラムで2つのトラバーサルと1つのトラバーサルを使用して配列から要素を削除します


このチュートリアルでは、2つのループとonループを持つ要素を削除する方法を学習します。要素を削除する必要はありません。削除する要素を次の要素に置き換えるだけです。

2つのトラバーサル

2つのループを使用して配列から要素を削除する手順を見てみましょう。

  • 配列を初期化し、要素を削除します。

  • 要素を削除する関数を記述します。

    • 配列を繰り返し処理して、要素を検索します。

    • 要素が見つかった場合は、ループを解除します。

    • 要素が見つかった場合は、配列のサイズを小さくしてください。

    • すべての要素を前のインデックスに移動します。

    • 配列の新しいサイズを返します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
int searchAndDeleteElement(int arr[], int n, int k) {
   int i;
   // searching for the element
   for (i = 0; i < n; i++) {
      if (arr[i] == k) {
         break;
      }
   }
   // if the element is present
   if (i < n) {
      // moving all the elements to previous index after k
      n = n - 1;
      for (int j = i; j < n; j++) {
         arr[j] = arr[j+1];
      }
   }
   // returning updated index
   return n;
}
int main() {
   int n = 6, k = 4;
   int arr[] = {1, 2, 3, 4, 5, 6};
   int updatedLength = searchAndDeleteElement(arr, n, k);
   // printing the array
   for (int i = 0; i < updatedLength; i++) {
      cout << arr[i] << " ";
   }
   cout << endl;
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます。

1 2 3 5 6

1つのトラバーサル

1つのループを使用して配列から要素を削除する手順を見てみましょう。

  • 配列を初期化し、要素を削除します。

  • 要素を削除する関数を記述します。

    • 配列を繰り返し処理して、要素を検索します。

    • 要素が見つかった場合は、ステートメントをスキップしてください。

    • すべての要素を前のインデックスに移動します。

    • 要素が見つかった場合はn-1を返し、そうでない場合はnを返します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
int searchAndDeleteElement(int arr[], int n, int k) {
   // checking for the last element
   if (arr[n-1] == k) {
      return n - 1;
   }
   bool isElementFound = false;
   for (int i = 0; i < n; i++) {
      // checking for k
      if (arr[i] == k && !isElementFound) {
         isElementFound = true;
         continue;
      }
      // if the element is already found move all the element to their previous indexes
      if (isElementFound) {
         arr[i-1] = arr[i];
      }
   }
   // returning updated n
   if (isElementFound) {
      return n - 1;
   }
   return n;
}
int main() {
   int n = 6, k = 4;
   int arr[] = {1, 2, 3, 4, 5, 6};
   int updatedLength = searchAndDeleteElement(arr, n, k);
   // printing the array
   for (int i = 0; i < updatedLength; i++) {
      cout << arr[i] << " ";
   }
   cout << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

1 2 3 5 6

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. ポインタを使用して配列の要素にアクセスするC++プログラム

    ポインタは、変数のメモリ位置またはアドレスを格納します。つまり、ポインタはメモリ位置を参照し、そのメモリ位置に格納されている値を取得することは、ポインタの逆参照と呼ばれます。 ポインタを使用して配列の単一の要素にアクセスするプログラムは、次のようになります- 例 #include <iostream> using namespace std; int main() {    int arr[5] = {5, 2, 9, 4, 1};    int *ptr = &arr[2];    cout<<&q

  2. unset関数を使用して配列から要素を削除するPHPプログラム

    unset関数を使用して配列から要素を削除するには、PHPコードは次のとおりです- 例 <?php    $my_array = array("Joe", "Ben", "Mary", "Barun", "Sona", "Mona");    unset($my_array[4]);    print_r("After deleting the element, the array is")