使用C++程式中兩次遍歷和一次遍歷從陣列中刪除元素


在本教程中,我們將學習如何使用兩個迴圈和一個迴圈刪除元素。我們不需要實際刪除元素,只需要用後面的元素替換要刪除的元素。

兩次遍歷

讓我們看看使用兩個迴圈從陣列中刪除元素的步驟。

  • 初始化陣列並刪除元素。

  • 編寫一個刪除元素的函式。

    • 遍歷陣列並搜尋元素。

    • 如果找到元素,則中斷迴圈。

    • 如果找到元素,則減小陣列的大小。

    • 將所有元素移動到它們之前的索引。

    • 返回陣列的新大小。

示例

讓我們看看程式碼。

 線上演示

#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

一次遍歷

讓我們看看使用一個迴圈從陣列中刪除元素的步驟。

  • 初始化陣列並刪除元素。

  • 編寫一個刪除元素的函式。

    • 遍歷陣列並搜尋元素。

    • 如果找到元素,則跳過該語句。

    • 將所有元素移動到它們之前的索引。

    • 如果找到元素,則返回 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

結論

如果您在本教程中有任何疑問,請在評論區提出。

更新於:2021年1月27日

368 次檢視

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告