Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
149,22 KB
Nội dung
Kiểudữliệudanhsách Lê Sỹ Vinh Bộ môn Khoa Học Máy Tính – Khoa CNTT ðại Học Công Nghệ - ðHQGHN Email: vinhioi@yahoo.com DanhsáchDanhsách là gì? Danhsách là cấu trúc dữliệu tuyến tính, trong ñó các phần tử dữliệu ñược sắp xếp theo một thứ tự xác ñịnh Ví dụ: – Danhsách sinh viên – Danhsách ñiện thoại – Danhsách môn học – Danhsách bài hát – Danhsách công việc Danhsách Trừu tượng hóa cấu trúc danhsách 1. Mô tả dữliệu A = (a 0 , a 1 , …, a n ) trong ñó a i là phần tử thứ i của danhsách A Ví dụ: A = (1, 2, 3, 3, 4, 5)A = (1, 2, 3, 3, 4, 5) A = (‘Vinh’, ‘Tuấn’,. ‘Ánh’) 2. Mô tả các phép toán trên cấu trúc danhsách • empty (A): Kiểm tra danhsách có rỗng hay không • length (A): Cho biết số phần tử của danhsách • element (A, i) : Trả phần tử ở vị trí thứ i của A. Ví dụ: A =(1,3,5) Element (A, 0) → 1 Element (A, 2) → 5 Danhsách • insert (A, i, x): Thêm phần tử x vào danhsách A tại vị trí i. A = (a 0 , a 1 ,…, a n ) → A = (a 0 ,a 1 ,…,a i-1 , x, a i ,…a n ) Ví dụ: A = (1,3,5) insert (A, 1, 4) → A = (1, 4, 3, 5) • append (A, x): Thêm x vào ñuôi danhsách A A = (a , a ,…, a ) → A = (a ,a ,…,a , x)A = (a 0 , a 1 ,…, a n ) → A = (a 0 ,a 1 ,…,a n , x) Ví dụ: A = (1,3,5) append (A, 8) → A = (1, 3, 5, 8) • delete (A, i): Loại phần tử ở vị trí thứ i trong danhsách A A = (a 0 , a 1 ,…a i-1 , a i , a i+1 , a n ) → A = (a 0 ,a 1 ,…,a i-1 , a i+1 ,…a n ) Ví dụ: A = (1,3,5) delete (A, 1) → A = (1, 5) Cài ñặt danhsách bằng mảng Mảng (array) • Tập hợp các phần tử (các biến) có cùng một kiểu • Một phần tử cụ thể trong mảng sẽ ñược xác ñịnh và truy cập bởi một chỉ số • Trong C/C++, các phần tử của mạng ñược ñặt cạnh nhau tạo thành một khối liên tục. ðịa chỉ thấp nhất tương ứng với phần tử ñầu tiên, ñịa chỉ cao nhất tương ứng với phần tử cuối cùng • Mảng thì có thể là một chiều hoặc nhiều chiều Cài ñặt danhsách bằng mảng ↑ ↑ ↑ ↑ 0 1 . . . N Max- 1 Mảng một chiều: a 0 a 1 . . . a n Mảng một chiều: dataType arrayName [Max]; Ví dụ: int scoreArr[100]; student studentArr[100]; Danhsách Tóm tắt về trừu tượng hóa cấu trúc danhsách • Mô tả dữliệu • A = (a 0 , a 1 , …, a n ) • Mô tả các phép toán trên cấu trúc danhsách • empty (A): Kiểm tra danhsách có rỗng hay không • length (A): Cho biết số phần tử của danhsách • element (A, i) : Trả phần tử ở vị trí thứ i của A. • insert (A, i, x): Thêm phần tử x vào danhsách A tại vị trí i. • append (A, x): Thêm x vào ñuôi danhsách A • delete (A, i): Loại phần tử ở vị trí thứ i trong danhsách A Các phép toán trên cấu trúc danhsách không phụ thuộc vào kiểudữliệu của các phần tử trong danh sách!!! Cài ñặt danhsách trong C++ Template 1. Generic function 2. Generic class ListArr project List.hList.h List.cpp Các phép toán khác trên danhsách • Tìm phần tử lớn nhất • ðổi chỗ hai phần tử • Sắp xếp tăng dần Con trỏ (pointer) • Là ñiểm mạnh nhất, nhưng cũng nguy hiểm nhất của C/ C++ • Chứa ñịa chỉ của một tế bào nhớ trong máy tính Giá trị trong ô nhớ 1 2 3 3 1 4 6 5 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ðịa chỉ ô nhớ 10 11 12 13 14 15 16 17 [...]... [] p; (xem ví d chương trình) Danh sách liên k t M ng -1 1 3 2 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 11 12 13 14 15 16 17 18 19 20 ↑ ↑ 21 22 int listArr[4] = {-1, 1, 3, 2} Danhsách liên k t -1 1 3 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 11 12 13 14 15 16 17 18 19 20 (-1, 15) → (1, 16) → (3, 21) → (2, NULL) ↑ ↑ head tail 2 ↑ ↑ 21 22 Cài ñ t danh sách liên k t Xem chương trình Các phép toán khác trên danh sách liên k t • Tìm ph n t l n... 21) → (2, NULL) ↑ ↑ head tail 2 ↑ ↑ 21 22 Cài ñ t danh sách liên k t Xem chương trình Các phép toán khác trên danhsách liên k t • Tìm ph n t l n nh t • ð i ch hai ph n t • S p x p tăng d n M ng và danhsách liên k t • Truy c p ph n t • Thêm ph n t • Xóa ph n t . sách ñiện thoại – Danh sách môn học – Danh sách bài hát – Danh sách công việc Danh sách Trừu tượng hóa cấu trúc danh sách 1. Mô tả dữ liệu A = (a 0 , a. Danh sách là cấu trúc dữ liệu tuyến tính, trong ñó các phần tử dữ liệu ñược sắp xếp theo một thứ tự xác ñịnh Ví dụ: – Danh sách sinh viên – Danh sách ñiện