Bài 52. Thêm/ xóa phần tử trong mảng 1 chiều

Thêm xóa phần tử trong mảng 1 chiều
Thêm xóa phần tử trong mảng 1 chiều

Hôm nay, Lập trình không khó sẽ cùng các bạn đi giải quyết bài tập “Thêm phần tử trong mảng 1 chiều và xóa phần tử trong mảng 1 chiều” nhé. Đây là 1 bài tập thực hành hơi nâng cao một chút. Nó thường gây ra những khó khăn nhất định cho các bạn lần đầu tiếp xúc. Chúng ta sẽ cùng nhau giải quyết bài toán thêm xóa phần tử trong mảng ngay bây giờ nhé.

Bài này yêu cầu bạn có kiến thức lập trình cơ bản về ngôn ngữ C hoặc C++ nhé. Nếu kiến thức này bạn chưa thực sự vững, hãy tham khảo khóa học lập trình C cơ bản của mình trên Youtube tại đây nhé.

Xây dựng các hàm nhập xuất mảng

Đầu tiên, bạn hãy xử lý xong phần nhập xuất mảng nhé. Chúng ta bắt buộc phải sử dụng nhập/ xuất mảng để sử dụng trong quá trình thêm xóa phần tử mảng.

Code hàm nhập và hàm xuất mảng:

Bạn có thể xem hướng dẫn chi tiết phần này tại đây:

Thêm phần tử vào mảng 1 chiều

Bạn có thể hình dung cách thêm 1 phần tử vào mảng qua hình ảnh dưới đây nhé.

them-phan-tu-vao-mang
Cách thêm 1 phần tử mới vào mảng

Như vậy, trước khi thực hiện thêm, bạn phải thực hiện lùi tất cả các số phía sau nơi được chèn(bao gồm cả vị trí chèn) về phía sau 1 ô nhớ. Như ảnh trên thì chỉ có số 9 bị ảnh hưởng, bị chuyển từ chỉ số 2 sang 3.

Sau khi dịch chuyển theo mô tả trên, chúng ta chỉ việc gán giá trị cần chèn cho phần tử tại nơi muốn chèn. Và cuối cùng, không quên tăng số lượng phần tử của mảng lên nhé.

Quy trình thêm phần tử vào mảng:

  1. Kiểm tra mảng có thể thêm được phần tử nữa không? Nếu không, thoát hàm
  2. Kiểm tra giá trị pos hợp lệ không. Ở đây nếu không hợp lệ mình cho về chỉ số đầu/cuối.
  3. Thực hiện dịch chuyển mảng(phần phía sau nơi chèn + vị trí chèn)
  4. Chèn vào vị trí cần chèn
  5. Tăng số lượng phần tử

Xóa phần tử trong mảng 1 chiều

Bạn có thể hình dung cách xóa 1 phần tử trong mảng qua hình ảnh dưới đây nhé.

xoa-phan-tu-trong-mang

Dễ nhận thấy, số lượng phần tử sẽ giảm đi 1. Tuy nhiên, hãy để ý các số từ 67 trở về sau đều bị giảm chỉ số đi 1 đơn vị.

Quy trình xóa phần tử trong mảng:

  1. Kiểm tra có thể xóa hay không? Nếu không => thoát hàm
  2. Kiểm tra giá trị pos hợp lệ không. Ở đây nếu không hợp lệ mình cho về chỉ số đầu/cuối.
  3. Dịch chuyển mảng lùi 1 chỉ số – phần phía sau nơi xóa
  4. Giảm số lượng phần tử

Gợi ý cho bạn: Nếu bạn là người đam mê thuật toán và thích giải các bài tập như thế này, hãy tham khảo chuyên mục bài tập c++ nhé.

Full code thêm xóa phần tử trong mảng 1 chiều

Kết quả chạy thử:

 

avatar
  Subscribe  
newest oldest most voted
Notify of
thắng
Guest
thắng

anh ơi anh làm một clip làm rõ về mảng đi anh , cái đó em không hiểu lắm

thắng
Guest
thắng

dạ em hiểu rồi a. cảm ơn anh :))

Tống Đức Nam
Guest
Tống Đức Nam

val vs pos là j v anh

Hoàng Huy Đức
Guest
Hoàng Huy Đức

làm sao để sau khi xóa hoặc thêm mảng trở về ban đầu được

Mạnh
Guest
Mạnh

Dạ em thắc mắc là hàm xóa phần tử giá trị a[n] vẫn tồn tại nên số lg phần tử sẽ ko bị giảm ạ ?

Mạnh
Guest
Mạnh

Anh cho e hỏi thêm là có hàm nào lấy được chỉ số của mảng ko ạ ?