Bài giảng Cơ sở dữ liệu giải thuật: Bài 4 - Cấu trúc dữ liệu biểu diễn danh sách giới thiệu tới các bạn về danh sách, trừu tượng hóa danh sách, cài đặt danh sách bằng mảng. Bài viết hữu ích với các bạn chuyên ngành Công nghệ thông tin.
Bài 4: Cấu trúc liệu biểu diễn danh sách Giảng viên: Hồng Thị Điệp Khoa Cơng nghệ Thơng tin – Đại học Cơng Nghệ Danh sách • Danh sách gì? – Là cấu trúc liệu tuyến tính, phần tử liệu xếp theo thứ tự xác định – Là tập thứ tự phần tử kiểu • Ví dụ – – – – – Danh sách sinh viên Danh sách điện thoại Danh sách môn học Danh sách hát Danh sách công việc diepht@vnu Trừu tượng hóa danh sách • Đặc tả liệu – • Đặc tả phép toán • Tất phần tử danh sách theo thứ tự Kiểm tra danh sách có rỗng hay khơng Đếm số phần tử danh sách Trả phần tử vị trí thứ i danh sách Thêm phần tử x vào vị trí i danh sách Thêm phần tử x vào danh sách Loại phần tử vị trí thứ i danh sách Các phép toán cấu trúc danh sách không phụ thuộc vào kiểu liệu phần tử danh sách – diepht@vnu Generic programming • Template C++ Trừu tượng hóa danh sách • Đặc tả liệu A = (a0, a1, …, an) phần tử thứ i danh sách A Ví dụ: A = (1, 2, 3, 3, 4, 5) A = (‘Vinh’, ‘Tuấn’, ‘Ánh’) • Đặc tả phép toán diepht@vnu Kiểm tra danh sách có rỗng hay khơng: empty(A) Đếm số phần tử danh sách: length(A) Trả phần tử vị trí thứ i danh sách: element(A, i) Thêm phần tử x vào vị trí i danh sách: insert(A, i, x) Thêm phần tử x vào đuôi danh sách: append(A, x) Loại phần tử vị trí thứ i danh sách: del (A, i) Ví dụ • • • • • • • • • A = (1, 2, 3, 3, 4, 5) empty(A) → false length(A) → element(A, 0) → element(A, 2) → insert(A, 2, 10) → A = (1, 2, 10, 3, 3, 4, 5) append(A, -5) → A = (1, 2, 10, 3, 3, 4, 5, -5) del(A, 3) → A = (1, 2, 10, 3, 4, 5, -5) del(A, 1) → A = (1, 10, 3, 4, 5, -5) diepht@vnu Cài đặt danh sách mảng • Mảng (array) – Tập hợp phần tử (các biến) có kiểu – Một phần tử cụ thể mảng xác định truy cập số – Trong C/C++, phần tử mảng đặt cạnh tạo thành khối liên tục Địa thấp tương ứng với phần tử đầu tiên, địa cao tương ứng với phần tử cuối – Mảng chiều nhiều chiều diepht@vnu Cài đặt danh sách mảng • Mảng chiều tĩnh – kiểu_dữ_liệu tên_mảng[kích_thước_tối_đa]; – Ví dụ • int dayso[100]; • Phanso dayphanso[15]; • Mảng chiều động: dùng phép tốn new – Ví dụ • int *daysod = new int[100]; • Phanso *dayphansod = new Phanso[15]; • A = (a0, a1, …, an) a0 a1 … diepht@vnu an n ? n+1 … ? MAX-1 insert(A, i, x) a0 … ai-1 … an ? ? … i-1 i … n n+1 n+2 a0 … ai-1 x … an ? … i-1 i i+1 … n+1 n+2 … ? MAX-1 … ? MAX-1 • Dồn tất phần tử từ vị trí i tới vị trí n sau vị trí • Sau đặt giá trị x vào vị trí i • Tăng số phần tử danh sách lên diepht@vnu del(A, i) a0 … ai-1 ai+1 … an ? … i-1 i i+1 … n n+1 a0 … ai-1 ai+1 … an ? ? … i-1 i … n-1 n n+1 … ? MAX-1 … ? MAX-1 • Dồn tất phần tử từ vị trí i+1 tới vị trí n lên trước vị trí • Giảm số phần tử danh sách diepht@vnu Chuẩn bị tới • Đọc phần cịn lại chương giáo trình (4.3 đến hết) diepht@vnu 10 .. .Danh sách • Danh sách gì? – Là cấu trúc liệu tuyến tính, phần tử liệu xếp theo thứ tự xác định – Là tập thứ tự phần tử kiểu • Ví dụ – – – – – Danh sách sinh viên Danh sách điện thoại Danh sách. .. phần tử danh sách Trả phần tử vị trí thứ i danh sách Thêm phần tử x vào vị trí i danh sách Thêm phần tử x vào đuôi danh sách Loại phần tử vị trí thứ i danh sách Các phép tốn cấu trúc danh sách khơng... Danh sách môn học Danh sách hát Danh sách cơng việc diepht@vnu Trừu tượng hóa danh sách • Đặc tả liệu – • Đặc tả phép tốn • Tất phần tử danh sách theo thứ tự Kiểm tra danh sách có rỗng hay khơng