ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีลบองค์ประกอบที่มีสองลูปและวนซ้ำ เราไม่จำเป็นต้องลบองค์ประกอบ เราจะแทนที่องค์ประกอบการลบด้วยองค์ประกอบถัดไป
สองทางผ่าน
มาดูขั้นตอนการลบองค์ประกอบออกจากอาร์เรย์โดยใช้สองลูป
-
เริ่มต้นอาร์เรย์และลบองค์ประกอบ
-
เขียนฟังก์ชันเพื่อลบองค์ประกอบ
-
วนซ้ำในอาร์เรย์และค้นหาองค์ประกอบ
-
หากพบองค์ประกอบให้ทำลายลูป
-
หากพบองค์ประกอบ ให้ลดขนาดของอาร์เรย์
-
ย้ายองค์ประกอบทั้งหมดไปยังดัชนีก่อนหน้า
-
คืนค่าขนาดใหม่ของอาร์เรย์
-
ตัวอย่าง
มาดูโค้ดกันเลย
#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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น