CTDL có kích thước thay đổi là một cấu trúc mà trong đó số lượng các phần tử có thể thay đổi một cách động trong quá trình thực hiện chương trình.
Một số kiểu chủ yếu của cấu trúc dữ liệu có kích thước thay đổi là: 4.10.1 Danh sách và cấu trúc danh sách
Danh sách là một CTDL tuyến tính với số lượng thay đổi của các phần tử có kiểu giống nhau.
Nếu các phần tử của một danh sách lại là một danh sách thì được gọi là cấu trúc danh sách (list structures).
Các phần tử có thể được thêm vào hoặc xóa khỏi một danh sách. Các phần tử có thể được lựa chọn từ một danh sách nhưng vì vị trí của phần tử trong danh sách có thể bị thay đổi do phép thêm và xóa các phần tử nên không thể sử dụng chỉ số để xác định phần tử. Thay vào đó, việc lựa chọn dựa trên cơ sở của mối quan hệ của vị trí của phần tử với danh sách chẳng hạn phần tử đầu, hai, ba, kế hặc cuối. Biểu diễn bộ nhớ liên kết cho danh sách và cấu trúc danh sách được dùng một cách phổ biến để phù hợp với sự thay đổi số lượng các phần tử.
4.10.2 Ngăn xếp và hàng đợi
Ngăn xếp là một danh sách mà trong đó việc lựa chọn, thêm, xóa phần tử được thực hiện ở 1 đầu của danh sách.
Do việc thêm, xóa phần tử chỉ được thực hiện ở một đầu của ngăn xếp, nên phần tử được đưa vào sau, sẽ được lấy ra trước. Do vậy ngăn xếp còn được gọi là cấu trúc dữ liệu kiểu LIFO (Last In, First Out).
Hàng đợi là một danh sách mà trong đó việc lựa chọn, và xóa phần tử được thực hiện
ở một đầu còn việc thêm phần tử được thực hiện ở đầu khác của danh sách. Ngôn ngữ lập trình Chương IV: Kiểu dữ liệu có cấu trúc
48
Do việc xóa phần tử được thực hiện ở một đầu (đầu của hàng) còn việc thêm phần tử được thực hiện ở cuối hàng, nên phần tử được đưa vào trước, sẽ được lấy ra trước.
Do vậy hàng đợi còn được gọi là cấu trúc dữ liệu kiểu FIFO (First In, First Out).
Cả hai phương pháp biểu diễn tuần tự và liên kết đều được dùng cho ngăn xếp và hàng đợi.