Lập trình

Cấu trúc dữ liệu dạng mảng: Tìm hiểu và tận dụng ưu điểm của nó

Huy Erick

Mảng (array) là một cấu trúc dữ liệu quen thuộc trong lập trình. Trong bài viết này, chúng ta sẽ cùng nhau ôn lại khái niệm về mảng và các cài đặt liên quan, sau...

Mảng (array) là một cấu trúc dữ liệu quen thuộc trong lập trình. Trong bài viết này, chúng ta sẽ cùng nhau ôn lại khái niệm về mảng và các cài đặt liên quan, sau đó đánh giá ưu nhược điểm của việc sử dụng mảng. Đảm bảo bạn đã từng đọc qua khái niệm về mảng trong ngôn ngữ C/C++ để tiếp cận dễ dàng với bài viết này!

Mảng là gì?

Mảng (hay còn gọi là array) là một vùng chứa những dữ liệu có cùng kiểu với nhau. Trong ngôn ngữ lập trình C/C++, mảng cũng được coi là một cấu trúc dữ liệu.

Cấu trúc dữ liệu mảng hoặc mảng là một cấu trúc dữ liệu bao gồm một nhóm các phần tử giá trị hoặc biến. Trong mảng, chúng ta quen thuộc với hai khái niệm sau:

  • Phần tử của mảng
  • Chỉ số phần tử (index)

Trong phạm vi của mảng, chúng ta thường sử dụng mảng một chiều và mảng hai chiều. Mảng 1 chiều được ngầm hiểu như một dãy chữa những phần tử có cùng kiểu dữ liệu với nhau.

Ví dụ, mảng có kích thước 10 phần tử và chứa những phần tử là số nguyên trong khoảng từ 1 đến 10:

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

Chúng ta tưởng tượng các phần tử và chỉ số trong mảng như sau:

arr[0] = 1 arr[1] = 2 arr[2] = 3 arr[3] = 4 arr[4] = 5 arr[5] = 6 arr[6] = 7 arr[7] = 8 arr[8] = 9 arr[9] = 10

Để truy cập vào bất kỳ phần tử nào có trong mảng, ta cần biết chỉ số (index) của phần tử đó. Ví dụ, truy cập vào chỉ số arr[4] sẽ có giá trị là 5 (hoặc hiểu là giá trị 5 là phần tử ở chỉ số arr[4]).

Chú ý: Chỉ số (index) của mảng một chiều hay nhiều chiều luôn bắt đầu từ số 0.

Mảng hai chiều và cách truy cập

Tiếp theo của mảng một chiều là mảng hai chiều (hay ma trận). Đối với mảng hai chiều, ta ngầm hiểu như một bảng bao gồm các hàng và các cột.

Ví dụ, một mảng hai chiều lưu trữ các phần tử có kiểu số nguyên từ 1 đến 12 và có kích thước 3x4 (3 hàng và 4 cột), khi được biểu diễn trong C/C++ sẽ là:

int number[3][4] = {     {1,2,3,4},     {5,6,7,8},     {9,10,11,12} };

Chúng ta tưởng tượng mảng 2 chiều như sau:

Để truy cập vào một phần tử trong mảng 2 chiều, ta cần xác định được chỉ số hàng và chỉ số cột của phần tử đó. Ví dụ number[1][2] (truy cập ở hàng thứ 1 và cột thứ 2) ta sẽ nhận được kết quả là 7.

Tương tự như mảng một chiều, chỉ số hàng và chỉ số cột trong mảng hai chiều cũng bắt đầu từ số 0.

Trong quá trình sử dụng mảng, chúng ta sẽ cần một số thao tác nhất định. Một số thao tác căn bản đối với mảng sẽ là:

  • Duyệt mảng
  • Chèn phần tử
  • Cập nhật phần tử
  • Tìm kiếm phần tử
  • Xóa phần tử

Trong những bài tiếp theo, chúng ta sẽ cùng nhau tìm hiểu chi tiết về cách cài đặt các thao tác trên đối với mảng một chiều trong ngôn ngữ C/C++. Bạn đọc có thể ôn lại loạt bài về lập trình C cơ bản để dễ dàng tiếp cận hơn trong những bài sau!

Ưu điểm: Truy cập phần tử trong mảng nhanh chóng, sử dụng bộ nhớ cố định, dễ dàng học và cài đặt.

Nhược điểm: Không thể thay đổi kích thước bộ nhớ khi chương trình được thực thi.

1