두 개의 순회
먼저 원래 배열과 배열에서 검색 및 삭제할 요소를 정의하겠습니다 -
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