Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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

   return 0;
}

출력

위의 코드는 다음 출력을 생성합니다 -

The array after deletion is
11 15 8 9 10

1회 순회

먼저 원래 배열과 배열에서 검색 및 삭제할 요소를 정의하겠습니다 -

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

출력

위의 코드는 다음 출력을 생성합니다 -

The array after deletion is
11 15 8 9 10