CẤU TRÚC DỮ LIỆU KIỂU MẢNG (ARRAY)

Một phần của tài liệu cau truc du lieu va giai thuat giaotrinh cuuduongthancong com (Trang 39 - 40)

Có thể nói, mảng là cấu trúc dữ liệu căn bản và đƣợc sử dụng rộng rãi nhất trong tất cả các ngôn ngữ lập trình. Một mảng là 1 tập hợp cố định các thành phần có cùng 1 kiểu dữ liệu, đƣợc lƣu trữ kế tiếp nhau và có thể đƣợc truy cập thông qua một chỉ số. Ví dụ, để truy cập tới phần tử thứ i của mảng a, ta viết a[i]. Chỉ số này phải là số nguyên không âm và nhỏ hơn kích thƣớc của mảng (số phần tử của mảng). Trong chƣơng trình, chỉ số này không nhất thiết phải là các hằng số hoặc biến số, mà có thể là các biểu thức hoặc các hàm.

a1 a2 ... ai ai+1 ... an

Lƣu ý rằng cấu trúc của bộ nhớ máy tính cũng đƣợc tổ chức thành các ô nhớ, và cũng có thể truy cập ngẫu nhiên thông qua các địa chỉ. Do vậy, việc lƣu trữ dữ liệu trong mảng có sự tƣơng thích hoàn toàn với bộ nhớ máy tính, trong đó có thể coi toàn bộ bộ nhớ máy tính nhƣ 1 mảng, và địa chỉ các ô nhớ tƣơng ứng nhƣ chỉ số của mảng. Chính vì sự tƣơng thích này mà việc sử dụng cấu trúc dữ liệu mảng trong các ngôn ngữ lập trình có thể làm cho chƣơng trình hiệu quả hơn và chạy nhanh hơn. Mảng có thể có nhiều hơn 1 chiều. Khi đó, số các chỉ số của mảng sẽ tƣơng ứng với số chiều. Chẳng hạn, trong mảng 2 chiều a, thành phần thuộc cột i, hàng j đƣợc viết là a[i][j]. Mảng 2 chiều còn đƣợc gọi là ma trận (matrix).

a11 a21 ... ai1 ai+11 ... am1 a12 a22 ... ai2 ai+12 ... am2 ... ... ... ... ... ... ... a1j a2j ... aij ai+1j ... amj a1j+1 a2j+1 ... aij+1 ai+1j+1 ... amj+1 ... ... ... ... ... ... ... a1n a2n ... ain ai+1n ... amn

Nhƣ đã nói ở trên, mảng là cấu trúc dữ liệu dễ sử dụng, tốc độ truy cập cao. Tuy nhiên, nhƣợc điểm chính của mảng là không linh hoạt về kích thƣớc. Nghĩa là khi ta đã khai báo 1 mảng thì kích thƣớc của nó là cố định, không thể thay đổi trong quá trình thực hiện chƣơng trình. Điều này rất bất tiện khi ta chƣa biết trƣớc số phần tử cần xử lý. Nếu khai báo mảng lớn sẽ tốn bộ nhớ và ảnh hƣởng đến hiệu suất của chƣơng trình. Nếu khai báo mảng nhỏ sẽ dẫn đến thiếu bộ nhớ. Ngoài ra, việc bố trí lại các phần tử trong mảng cũng khá phức tạp, bởi vì mỗi phần tử đã có vị trí cố định trong mảng, và để bố trí 1 phần tử sang 1 vị trí khác, ta phải tiến hành “dồn” các phần tử có liên quan.

Trong phần tiếp theo, chúng ta sẽ xem xét một cấu trúc dữ liệu khác, cũng cho phép lƣu trữ 1 tập các phần tử, nhƣng có kích thƣớc và cách bố trí linh hoạt hơn. Đó là cấu trúc dữ liệu danh sách liên kết.

Một phần của tài liệu cau truc du lieu va giai thuat giaotrinh cuuduongthancong com (Trang 39 - 40)

Tải bản đầy đủ (PDF)

(153 trang)