[Bài 30] Chèn Và Xóa Phần Tử

[Bài 30] Chèn Và Xóa Phần Tử

Trong bài viết này mình sẽ hướng dẫn các bạn cách chèn và xóa một phần tử trong mảng 1 chiều trong C++.

1. Thao Tác Chèn

Khi chèn phần tử vào trong mảng thì mảng của bạn cần thêm 1 ô nhớ để lưu phần tử được thêm, vì thế nếu khi khai báo mảng ban đầu bạn cần khai báo thêm 1 vài phần tử. 

Bài toán : Cho mảng A[] gồm N phần tử, hãy chèn phần tử có giá trị X và chỉ số K trong mảng 

Ví dụ A[] = {2, 3, 1, 5, 8, 9, 4} và X = 100, K = 3 thì mảng sau khi xóa sẽ là {2, 3, 1, 100, 5, 8, 9, 4}

Thuật toán :

  1. Dịch các phần tử từ chỉ số K tới chỉ số N - 1 trong mảng sang phải 1 phần tử, việc dịch sẽ được thực hiện từ phải sang trái. 
  2. Gán A[K] = X
  3. Tăng N lên 1 đơn vị 

Code : 

#include <iostream>
#include <math.h>

using namespace std;

int main() {
int n = 7, k = 3, x = 100;
int a[10] = {2, 3, 1, 5, 8, 9, 4};
for (int i = n - 1; i >= k; i--) {
    a[i + 1] = a[i];
}
a[k] = x;
++n;
cout << "Mang sau khi chen : ";
for (int i = 0; i < n; i++) {
    cout << a[i] << " ";
}
return 0;

}

 

Output : 

Mang sau khi chen : 2 3 1 100 5 8 9 4

 

2. Thao Tác Xóa

Trong mảng 1 chiều thì kích thước mảng đã được khai báo cố định và không thể thay đổi, do đó khi xóa phần tử trong mảng thì thực chất mảng vẫn có kích thước như ban đầu. 

Ban đầu mảng có N phần tử thì ở đây việc xóa phần tử trong mảng chỉ đơn giản là ta thay vì quản lý N phần tử trong mảng ban đầu thì ta quản lý N - 1 phần tử. 

Bài toán : Cho mảng A[] gồm N phần tử, hãy xóa phần tử ở chỉ số K trong mảng 

Ví dụ A[] = {2, 3, 1, 5, 8, 9, 4} và K = 3 thì mảng sau khi xóa sẽ là {2, 3, 1, 8, 9, 4}

Thuật toán : Dịch các phần tử từ chỉ số K + 1 tới chỉ số N - 1 sang trái, việc dịch sẽ được thực hiện từ trái qua phải. Sau đó giảm N đi 1 đơn vị vì bạn vừa xóa 1 phần tử trong mảng 

Code : 

#include <iostream>
#include <math.h>

using namespace std;

int main() {
int n = 7, k = 3;
int a[7] = {2, 3, 1, 5, 8, 9, 4};
for (int i = k; i < n - 1; i++) {
    a[i] = a[i + 1];
}
--n;
cout << "Mang sau khi xoa : ";
for (int i = 0; i < n; i++) {
    printf("%d ", a[i]);
}
return 0;

}

 

Output : 

Mang sau khi xoa : 2 3 1 8 9 4 

 

Lập trình C++ cơ bản