Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบองค์ประกอบออกจากอาร์เรย์โดยใช้การข้ามผ่านสองครั้งและการข้ามผ่านหนึ่งครั้งในโปรแกรม C++


ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีลบองค์ประกอบที่มีสองลูปและวนซ้ำ เราไม่จำเป็นต้องลบองค์ประกอบ เราจะแทนที่องค์ประกอบการลบด้วยองค์ประกอบถัดไป

สองทางผ่าน

มาดูขั้นตอนการลบองค์ประกอบออกจากอาร์เรย์โดยใช้สองลูป

  • เริ่มต้นอาร์เรย์และลบองค์ประกอบ

  • เขียนฟังก์ชันเพื่อลบองค์ประกอบ

    • วนซ้ำในอาร์เรย์และค้นหาองค์ประกอบ

    • หากพบองค์ประกอบให้ทำลายลูป

    • หากพบองค์ประกอบ ให้ลดขนาดของอาร์เรย์

    • ย้ายองค์ประกอบทั้งหมดไปยังดัชนีก่อนหน้า

    • คืนค่าขนาดใหม่ของอาร์เรย์

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
int searchAndDeleteElement(int arr[], int n, int k) {
   int i;
   // searching for the element
   for (i = 0; i < n; i++) {
      if (arr[i] == k) {
         break;
      }
   }
   // if the element is present
   if (i < n) {
      // moving all the elements to previous index after k
      n = n - 1;
      for (int j = i; j < n; j++) {
         arr[j] = arr[j+1];
      }
   }
   // returning updated index
   return n;
}
int main() {
   int n = 6, k = 4;
   int arr[] = {1, 2, 3, 4, 5, 6};
   int updatedLength = searchAndDeleteElement(arr, n, k);
   // printing the array
   for (int i = 0; i < updatedLength; i++) {
      cout << arr[i] << " ";
   }
   cout << endl;
   return 0;
}

ผลลัพธ์

หากคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้

1 2 3 5 6

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

มาดูขั้นตอนการลบองค์ประกอบออกจากอาร์เรย์โดยใช้ลูปเดียว

  • เริ่มต้นอาร์เรย์และลบองค์ประกอบ

  • เขียนฟังก์ชันเพื่อลบองค์ประกอบ

    • วนซ้ำในอาร์เรย์และค้นหาองค์ประกอบ

    • หากพบองค์ประกอบ ให้ข้ามคำสั่ง

    • ย้ายองค์ประกอบทั้งหมดไปยังดัชนีก่อนหน้า

    • หากพบองค์ประกอบ ให้คืนค่า n - 1 มิฉะนั้น จะคืนค่า n

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
int searchAndDeleteElement(int arr[], int n, int k) {
   // checking for the last element
   if (arr[n-1] == k) {
      return n - 1;
   }
   bool isElementFound = false;
   for (int i = 0; i < n; i++) {
      // checking for k
      if (arr[i] == k && !isElementFound) {
         isElementFound = true;
         continue;
      }
      // if the element is already found move all the element to their previous indexes
      if (isElementFound) {
         arr[i-1] = arr[i];
      }
   }
   // returning updated n
   if (isElementFound) {
      return n - 1;
   }
   return n;
}
int main() {
   int n = 6, k = 4;
   int arr[] = {1, 2, 3, 4, 5, 6};
   int updatedLength = searchAndDeleteElement(arr, n, k);
   // printing the array
   for (int i = 0; i < updatedLength; i++) {
      cout << arr[i] << " ";
   }
   cout << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

1 2 3 5 6

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น