Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách xóa một phần tử có hai vòng lặp và vòng lặp trên. Chúng tôi không cần phải xóa phần tử. Chúng tôi sẽ chỉ thay thế phần tử đang xóa bằng các phần tử tiếp theo.
Hai cuộc giao tiếp
Hãy xem các bước để xóa một phần tử khỏi mảng bằng cách sử dụng hai vòng lặp.
-
Khởi tạo mảng và xóa phần tử.
-
Viết một hàm để xóa phần tử.
-
Lặp lại trên mảng và tìm kiếm phần tử.
-
Nếu phần tử được tìm thấy, hãy phá vỡ vòng lặp.
-
Nếu phần tử được tìm thấy, hãy giảm kích thước của mảng.
-
Di chuyển tất cả các phần tử về chỉ mục trước đó của chúng.
-
Trả về kích thước mới của mảng.
-
Ví dụ
Hãy xem mã.
#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; }
Đầu ra
Nếu bạn thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.
1 2 3 5 6
Một lần chuyển giao
Hãy xem các bước để xóa một phần tử khỏi mảng bằng một vòng lặp.
-
Khởi tạo mảng và xóa phần tử.
-
Viết một hàm để xóa phần tử.
-
Lặp lại trên mảng và tìm kiếm phần tử.
-
Nếu phần tử được tìm thấy, hãy bỏ qua câu lệnh.
-
Di chuyển tất cả các phần tử về chỉ mục trước đó của chúng.
-
Nếu phần tử được tìm thấy, sau đó trả về n - 1 khác trả về n.
-
Ví dụ
Hãy xem mã.
#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; }
Đầu ra
Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.
1 2 3 5 6
Kết luận
Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.