在 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

回到顶部