在 C++ 中使用两次遍历和一次遍历从数组中删除一个元素?
两次遍历
让我们首先定义原始数组和要从数组中搜索和删除的元素 -
int ele = 5;int arr = [1,2,3,4];
现在我们在数组中循环以找到给定的元素 -
for (i=0; i<length; i++)if (arr[i] == ele) break;
如果找到给定的元素位置,那么我们将元素向左移动,这些元素位于找到的元素的右侧 -
if (i < length) {length--;
for (int j=i; j<length; j++)
arr[j] = arr[j+1];
}
例子
让我们看看下面的实现,看看在两次遍历中删除数组中的元素 -
#include<iostream>using namespace std;
int main() {
int arr[] = {11, 15, 6, 8, 9, 10};
int length = sizeof(arr)/sizeof(arr[0]);
int ele = 6;
int i;
for (i=0; i<length; i++)
if (arr[i] == ele) break;
if (i < length) {
length--;
for (int j=i; j<length; j++)
arr[j] = arr[j+1];
}
cout << "删除后的数组为 "<<endl;
for (int i=0; i<length; i++)
cout << arr[i] << " ";
return 0;
}
输出
上面的代码将产生以下输出 -
删除后的数组为11 15 8 9 10
一次遍历
让我们首先定义原始数组和要从数组中搜索和删除的元素 -
int ele = 15;int arr = [11,15,6,8,9,10];
现在我们声明两个变量 Boolean found,它指定是否找到元素和 int pos,如果找到,它将存储元素位置 -
bool found=false;int pos=-1;
接下来,我们搜索数组,如果找到一个元素,我们将在我们的循环单次遍历时存储其位置和移位元素。
for (int i=0; i<length; i++){if(pos!=-1){
arr[pos]=arr[pos+1];
j++;
}
else if(arr[i]==ele){
pos=i;
found=true;
}
}
例子
让我们看看下面的实现,看看只在一次遍历中删除数组中的元素 -
#include<iostream>using namespace std;
int main() {
int arr[] = {11, 15, 6, 8, 9, 10};
int length = sizeof(arr)/sizeof(arr[0]);
int ele = 6 ;
bool found=false;
int pos=-1;
for (int i=0; i<length; i++){
if(pos!=-1){
arr[pos]=arr[pos+1];
pos++;
}
else if(arr[i]==ele){
pos=i;
found=true;
}
}
cout << "删除后的数组为 "<<endl;
if(found){
length--;
}
for (int i=0; i<length; i++)
cout << arr[i] << " ";
return 0;
}
输出
上面的代码将产生以下输出 -
删除后的数组为11 15 8 9 10
以上是 在 C++ 中使用两次遍历和一次遍历从数组中删除一个元素? 的全部内容, 来源链接: utcz.com/z/331887.html