在C ++程序中使用两次遍历和一次遍历从数组中删除元素

在本教程中,我们将学习如何删除具有两个循环和on循环的元素。我们不需要删除该元素。我们只将delete元素替换为next元素。

两次遍历

让我们看看使用两个循环从数组中删除元素的步骤。

  • 初始化数组并删除元素。

  • 编写一个删除元素的函数。

    • 遍历数组并搜索元素。

    • 如果找到该元素,则打破循环。

    • 如果找到该元素,请减小数组的大小。

    • 将所有元素移至其先前的索引。

    • 返回数组的新大小。

例子

让我们看一下代码。

#include <bits/stdc++.h>

using namespace std;

int searchAndDeleteElement(int arr[], int n, int k) {

   int i;

   // 寻找元素

   for (i = 0; i < n; i++) {

      if (arr[i] == k) {

         break;

      }

   }

   // 如果该元素存在

   if (i < n) {

      // 将所有元素移到k之后的上一个索引

      n = n - 1;

      for (int j = i; j < n; j++) {

         arr[j] = arr[j+1];

      }

   }

   // 返回更新的索引

   return n;

}

int main() {

   int n = 6, k = 4;

   int arr[] = {1, 2, 3, 4, 5, 6};

   int updatedLength = searchAndDeleteElement(arr, n, k);

   // 打印数组

   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) {

   // 检查最后一个元素

   if (arr[n-1] == k) {

      return n - 1;

   }

   bool isElementFound = false;

   for (int i = 0; i < n; i++) {

      // 检查k

      if (arr[i] == k && !isElementFound) {

         isElementFound = true;

         continue;

      }

      // 如果已经找到该元素,则将所有元素移至其先前的索引

      if (isElementFound) {

         arr[i-1] = arr[i];

      }

   }

   // 返回更新的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);

   // 打印数组

   for (int i = 0; i < updatedLength; i++) {

      cout << arr[i] << " ";

   }

   cout << endl;

   return 0;

}

输出

如果运行上面的代码,您将得到以下结果。

1 2 3 5 6

结论

以上是 在C ++程序中使用两次遍历和一次遍历从数组中删除元素 的全部内容, 来源链接: utcz.com/z/337243.html

回到顶部