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

การเดินทางครั้งเดียว

ให้เรากำหนดอาร์เรย์ดั้งเดิมและองค์ประกอบที่จะค้นหาและลบออกจากอาร์เรย์ก่อน -

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

ตอนนี้เราประกาศสองตัวแปรบูลีน พบ ซึ่งระบุว่าจะพบองค์ประกอบหรือไม่และ 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