Computer >> Máy Tính >  >> Lập trình >> C ++

Xóa một phần tử khỏi mảng bằng cách sử dụng hai đường truyền và một đường truyền trong C ++?

Hai cuộc giao tiếp

Trước tiên, chúng ta hãy xác định mảng ban đầu và phần tử sẽ được tìm kiếm và xóa khỏi mảng -

int ele = 5;
int arr = [1,2,3,4];

Bây giờ chúng ta lặp lại trong mảng để tìm phần tử đã cho -

for (i=0; i<length; i++)
   if (arr[i] == ele) break;

Nếu vị trí phần tử đã cho được tìm thấy thì chúng tôi chuyển các phần tử sang trái ở bên phải thành phần tử được tìm thấy -

if (i < length) {
   length--;
      for (int j=i; j<length; j++)
         arr[j] = arr[j+1];
}

Ví dụ

Hãy để chúng tôi xem cách triển khai sau đây để biết việc xóa phần tử trong mảng theo hai đường truyền -

#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 << "The array after deletion is "<<endl;
   for (int i=0; i<length; i++)
      cout << arr[i] << " ";

   return 0;
}

Đầu ra

Đoạn mã trên sẽ tạo ra kết quả sau -

The array after deletion is
11 15 8 9 10

Một lần chuyển giao

Trước tiên, chúng ta hãy xác định mảng ban đầu và phần tử sẽ được tìm kiếm và xóa khỏi mảng -

int ele = 15;
int arr = [11,15,6,8,9,10];

Bây giờ chúng tôi khai báo hai biến Boolean found chỉ định xem phần tử có được tìm thấy hay không và int pos sẽ lưu trữ vị trí phần tử nếu được tìm thấy -

bool found=false;
int pos=-1;

Tiếp theo, chúng tôi tìm kiếm mảng và nếu một phần tử được tìm thấy, chúng tôi sẽ lưu trữ vị trí và dịch chuyển các phần tử của nó trong khi vòng lặp của chúng tôi di chuyển chỉ trong một lần.

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;
   }
}

Ví dụ

Hãy để chúng tôi xem cách triển khai sau để biết việc xóa phần tử trong mảng chỉ trong một lần duyệt -

#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 << "The array after deletion is "<<endl;
   if(found){
      length--;
   }
   for (int i=0; i<length; i++)
      cout << arr[i] << " ";
   return 0;
}

Đầu ra

Đoạn mã trên sẽ tạo ra kết quả sau -

The array after deletion is
11 15 8 9 10