Thêm/Xóa phần tử trên mảng một chiều | sinhvientot.net

Trong các bài viết trước chúng ta đã làm quen với các kiến thức về mảng một chiều. Các bạn có thể xem lại các bài viết này ở link bên dưới. Hôm nay chúng ta tiếp tục làm quen với thao tác, thêm, xóa phần tử trên mảng.

Hàm Thêm vào mảng một giá trị x tại vị trí vt (kiểm tra tính hợp lệ của vt)

  • Kiểm tra nếu k ∈[0, n] thì:
    • Dời các phần tử từ vị trí n-1 đến k lùi lại 1 vị trí.
    • Thêm x vào vị trí thứ k của mảng, tăng n thêm 1.
void ThemPhanTu(int a[], int &n, int x, int vt)
{
	if(vt>=0 && vt<=n)
	{
		for(int i=n; i>vt; i--)
			a[i] = a[i-1]; //Dịch các phần tử sang phải 1 vị trí
		a[vt]=x; //Thêm x vào vị trí vt
		n++; //Tăng số phần tử lên 1		
	}
	else
		printf("\nVi tri %d khong hop le.", vt);
}

Hàm Xóa khỏi mảng một giá trị x

Để xóa một phần tử trong mảng ta phải Kiểm tra nếu x có tồn tại trong mảng thì:

  • Dời các phần tử sau x tới 1 vị trí.
  • Giảm n bớt 1.
int TimPhanTu(int a[], int n, int x)
{
	for(int i=0; i<n; i++)
		if(a[i] == x)
			return i; //Tìm thấy x tại vị trí thứ i
	return -1; //Không tìm thấy x trong mảng
}
//=======================================================================
void XoaPhanTu(int a[], int &n, int x)
{
	int vt=TimPhanTu(a, n, x); //Tìm vị trí x trong mảng
	if(vt==-1)
		printf("\nKhong tim thay phan tu %d muon xoa.", x);
	else
	{
		for(int i=vt; i<=n-2; i++)
			a[i] = a[i+1]; //Dịch các phần tử sang trái 1 vị trí
		n--; //Giảm số phần tử bớt 1
	}			
}