在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