Thêm/Xóa Phần Tử Trên Mảng Một Chiều

Sign in Sign in Welcome!Log into your account your username your password Forgot your password? Password recovery Recover your password your email Search Thursday, December 18, 2025
  • Sign in / Join
Sign in Welcome! Log into your account your username your password Forgot your password? Get help Password recovery Recover your password your email A password will be e-mailed to you. sinhvientot.net sinhvientot.net sinhvientot.net sinhvientot.net Home Lập trình C/C++ Thêm/Xóa phần tử trên mảng một chiều Facebook Twitter Pinterest WhatsApp

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.

  1. Hướng dẫn Dev-C++ căn bản hoặc  Hướng dẫn Tạo Project Visual C++ trong Visual Studio 2012
  2. Lý thuyết Mảng một chiều
  3. Duyệt mảng một chiều
  4. Nhập xuất mảng một chiều

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 } }

RELATED ARTICLESMORE FROM AUTHOR

C/C++

Sự khác nhau giữa Inline function và Macro trong C

C/C++

Trong ngôn ngữ C/C++ có bao nhiêu vùng nhớ (Memory layout)

C/C++

Cấu trúc dữ liệu danh sách nhân viên

C/C++

Tổng quan File trong C

C/C++

Cấu trúc kiểu dữ liệu sinh viên

C/C++

Cấu trúc mô tả một điểm trên tọa độ xOy

17 COMMENTS

  1. [Hàm tìm phần t]: Nếu mà trong mảng có hai phần tử muốn tìm thì làm sao ạ?

    [Hàm xóa phần tử] Nếu trong mảng có hai phần tử giống nhau mà xóa thì như thế nào ạ?

    Log in to leave a comment
    • #include “stdafx.h” #include using namespace std; int ktra(int a[], int n,int x) { for (int i = 0;i<n;i++) { if (a[i] == x)return i; } return -1; } void xoa(int a[], int &n, int x) { int m; int k = ktra(a, n, x); if(k!=-1) { for (int i = k;i> n >> x; k = n; for (int i = 0;i > a[i]; } m = ktra(a, n, x); if (m == -1)cout << "Khong co trong mang."; else { for (int i = 0;i < k;i++) { xoa(a, n, x); } for (int i = 0;i < n;i++) { cout << a[i] << " "; } } system("pause"); return 0; } Đây là code xóa phần tử x ( có bao nhiêu x xóa hết) trong mảng và xuất ra mảng mới.

      Log in to leave a comment
  2. code như ad thì nếu vị cuối cùng của mảng là vị trí cần xóa … thì máy tính sẽ bị bốc khói khi chạy vì không tồn tại giá trị của a[i+1];

    Log in to leave a comment
    • đọc kỹ code bạn nhé

      Log in to leave a comment
    • chuan lun :))

      Log in to leave a comment
  3. xóa phần tử lẻ trong mảng ntn ạ?

    Log in to leave a comment
    • thêm điều kiện phần tử lẻ mới xóa thôi bạn

      Log in to leave a comment
  4. vt lúc đầu gán bằng gì ạ

    Log in to leave a comment
  5. sao lại trừ 2 ?

    Log in to leave a comment
  6. code thêm thì a[i]=a[i+1] code xóa mới a[i-1] chứ nhỉ

    Log in to leave a comment
  7. à em nhầm em hiểu rồi

    Log in to leave a comment
  8. Mình cũng đamg không hiểu giống bạn bạn gt hộ mình vs

    Log in to leave a comment
  9. mang co hai hoac nhieu phan tu giong nhau muon lay 1 don vi thoi thi lam tn ah: vidu: A[] = {1, 2, 2, 2, 3}; kq: A[] = {1, 2, 3}; ai biet chi minh voi.

    Log in to leave a comment
    • nó là bài toán xóa phần tử trùng thôi mà

      Log in to leave a comment
  10. tại sạo i<=n-2 vậy ai giải thích hộ mk cái mk ko hiểu.thank ạ

    Log in to leave a comment
  11. cho e hỏi thêm phần tử ở vòng lặp for (int i=n; i>vt; i–) tại sao mình phải để ” i>vt ” ạ ? nếu mình đẻ ” i>= vt+1 ” có được không ạ ?

    Log in to leave a comment
    • bạn có thể test thử 🙂

      Log in to leave a comment

LEAVE A REPLY Cancel reply

Log in to leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Danh sách các bài học

Các kiểu dữ liệu cơ bản trong ngôn ngữ C/C++

Mr Good - April 16, 2016 0

Hướng dẫn Tạo Project Visual C++ trong Visual Studio 2012

April 16, 2016

Biến-Hằng-Câu lệnh và biểu thức trong C/C++

April 16, 2016

Cấu trúc IF-ELSE

April 16, 2016

Cấu trúc switch – case

April 16, 2016

Vòng lặp For

April 16, 2016

Cấu trúc While, Do-while

April 16, 2016

Cách sử dụng hàm trong lập trình

April 16, 2016

Mảng một chiều

April 16, 2016 Load more

Bài viết mới nhất

Download

Download Cisco Packet Tracer

Windows 10

Hướng dẫn cài đặt webserver trên localhost để chạy wordpress

HPE

Hướng dẫn cấu hình IP ILO máy chủ HP DL380 Gen10

CentOS

CentOS 8 – Giới thiệu về hệ điều hành Linux (P1)

Load more © Copyright 2016, All Rights Reserved. Donations are always appreciated! MEW: 0x296f1a39d5Ca3cb83C76724eA38af3B90B90109D MORE STORIES

Trộn thư (Mail Merge) trong Word

Mr Good - June 20, 2016 0

Giải thuật Dijkstra

Võ Tình Thương - January 4, 2017 0

Từ khóa » Xóa Phần Tử Có Giá Trị X Trong Mảng