Chương 2: Các kiểu dữ liệu trừu tượng cơ bản (Basic Abstract Data Types)
lượt xem 12
download
Các phần tử trong DS có thứ tự tuyến tính theo vị trí xuất hiện: ai đứng trước ai+1 (i=1..n-1)...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương 2: Các kiểu dữ liệu trừu tượng cơ bản (Basic Abstract Data Types)
- Chương 2 Các kiểu dữ liệu trừu tượng cơ bản (Basic Abstract Data Types) 1 Chương 2: Các ADTs
- Nội dung • Danh sách (List) – Cài đặt bằng mảng – Cài đặt bằng con trỏ – Cài đặt bằng con nháy (tham khảo) • Ngăn xếp (Stack) • Hàng đợi (Queue) • Danh sách liên kết kép (Double Linked List) (tham khảo) 2 Chương 2: Các ADTs
- Danh sách (List) • Khái niệm • Các phép toán • Cài đặt danh sách (CĐ DS) – bằng mảng danh sách đặc – bằng con trỏ danh sách liên kết (Single Linked List) 3 Chương 2: Các ADTs
- Khái niệm DS • Là tập hợp hữu hạn các phần tử có cùng kiểu • Kiểu chung được gọi là kiểu phần tử (Element Type) • Thường biểu diễn dưới dạng: a1, a2, ..., an • Nếu – n=0: danh sách rỗng – n>0: phần tử đầu tiên là a1, phần tử cuối cùng là an • Độ dài của DS: số phần tử của DS • Các phần tử trong DS có thứ tự tuyến tính theo vị trí xuất hiện: ai đứng trước ai+1 (i=1..n-1) 4 Chương 2: Các ADTs
- Các phép toán trên DS (1) Phép toán Chức năng MakeNull_List(L) Khởi tạo danh sách L rỗng Kiểm tra xem L có rỗng hay không Empty_List(L) Kiểm tra xem L có đầy hay không Full_List(L) Trả về vị trí phần tử đầu tiên trong L First_List(L) Trả về vị trí sau phần tử cuối trong L End_List(L) Trả về vị trí sau phần tử p trong L Next(p, L) Trả về vị trí trước phần tử p trong L Previous(p, L) 5 Chương 2: Các ADTs
- Các phép toán trên DS (2) Phép toán Chức năng Insert_List(x, p, L) Chèn phần tử có nội dung x vào L tại vị trí p Trả về vị trí của phần tử có nội dung x trong Locate(x, L) L, nếu không tìm thấy trả về End_List(L) Truy xuất giá trị phần tử thứ p trong danh Retrieve(p, L) sách L Xóa phần tử tại vị trí p trong L Delete_List(p, L) Nhập giá trị các phần tử trong L Read_List(L) Hiển thị các phần tử trong L theo thứ tự Print_List(L) xuất hiện 6 Chương 2: Các ADTs
- Áp dụng • Thêm phần tử x vào đầu/ cuối L? • Xóa phần tử ở đầu/ cuối L? • Truy xuất phần tử ở đầu/ cuối L? Insert_List(x, First_List(L), L) Delete_List(First_List(L), L) Retrieve(First_List(L), L) 7 Chương 2: Các ADTs
- Ví dụ Dùng các phép toán trừu tượng trên danh sách, viết hàm sắp xếp danh sách theo thứ tự tăng dần void Sort(List L) { Position p,q; //ki u v trí c a các ph n t p= First_List(L); // v trí ph n t ñ u tiên while (p->Next != End_List(L)) { q = Next(p,L); // v trí ph n t sau ph n t p while (q != End_List(L)) { if (Retrieve(p, L) > Retrieve(q, L)) Swap(p, q); // hoán ñ i n i dung 2 ph n t q = Next(q, L); } p = Next(p, L); } } 8 Chương 2: Các ADTs
- CĐ DS bằng mảng (1) 1 2 3 … Last MaxLength Vị trí • Vị trí của phần tử trong danh sách:“chỉ số mảng tại vị trí lưu trữ phần tử + 1” 9 Chương 2: Các ADTs
- CĐ DS bằng mảng (2) • Dùng 1 mảng để lưu trữ liên tiếp các phần tử (Elements) • Có kiểu phần tử (ElementType) và kiểu vị trí (Position) xác định • Phải ước lượng số phần tử tối đa của danh sách (MaxLength) • Phải lưu trữ độ dài hiện tại của danh sách (Last) 10 Chương 2: Các ADTs
- CĐ DS bằng mảng (3)_Khai báo #define MaxLength ... typedef ... ElementType; typedef int Position; typedef struct { ElementType Elements[MaxLength]; Position Last; } List; Khai báo khi sử dụng List L; 11 Chương 2: Các ADTs
- CĐ DS bằng mảng (4)_Khởi tạo L rỗng • Cho độ dài danh sách bằng 0 void MakeNull_List(List *L){ L->Last = 0; } 12 Chương 2: Các ADTs
- CĐ DS bằng mảng (5)_Kiểm tra L rỗng? • Đ dài danh sách có b ng 0 hay không? int Empty_List(List L){ return (L.Last == 0); } 13 Chương 2: Các ADTs
- CĐ DS bằng mảng (6)_Kiểm tra L đầy? • Đ dài danh sách có b ng MaxLength hay không? int Full_List(List L){ return (L.Last == MaxLength); } 14 Chương 2: Các ADTs
- CĐ DS bằng mảng (7)_Vị trí phần tử đầu tiên • V trí 1 Position First_List(List L){ return 1; } 15 Chương 2: Các ADTs
- CĐ DS bằng mảng (8)_Vị trí sau phần tử cuối • V trí Last + 1 Position End_List(List L){ return (L.Last + 1); } 16 Chương 2: Các ADTs
- CĐ DS bằng mảng (9)_Vị trí phần tử kế tiếp p • V trí p + 1 Position Next(Position p, List L){ return (p + 1); } 17 Chương 2: Các ADTs
- CĐ DS bằng mảng (10)_Vị trí phần tử trước p • V trí p - 1 Position Previous(Position p, List L){ return (p - 1); } 18 Chương 2: Các ADTs
- CĐ DS bằng mảng (11)_Truy xuất phần tử thứ p • Giá tr t i ch s p - 1 ElementType Retrieve(Position p, List L){ return (L.Elements[p-1]); } 19 Chương 2: Các ADTs
- CĐ DS bằng mảng (12)_Chèn x vào vị trí p Nếu mảng đầy in thông báo … Nếu vị trí p không hợp lệ ( p < 1 hoặc p > End_List(L) ) in thông báo … Ngược lại • Dời các phần tử từ vị trí p đến cuối ra sau một vị trí • Đưa phần tử x vào vị trí p • Tăng độ dài lên 1 20 Chương 2: Các ADTs
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học đại cương - Chương 2: Kiểu dữ liệu - Biến - Biểu thức
0 p | 330 | 134
-
Chương 2: Các kiểu dữ liệu cơ bản
42 p | 381 | 127
-
Ngôn ngữ lập trình C++ Chương 2 – Các kiểu dữ liệu cơ bản Các cấu trúc
38 p | 372 | 118
-
Bài giảng Kỹ thuật lập trình - Chương 2: Các yếu tố cơ bản của C và C++
64 p | 277 | 61
-
Bài giảng Ngôn ngữ lập trình C++: Chương 2 - Trần Minh Châu
38 p | 236 | 58
-
Giáo trình lập trình nâng cao - Chương 2
49 p | 149 | 44
-
Bài giảng Lập trình căn bản - Chương 2: Các thành phần cơ bản của ngôn ngữ C
46 p | 145 | 9
-
Chương 2 – Các kiểu dữ liệu cơ bản Các cấu trúc điều khiển
38 p | 79 | 7
-
Bài giảng Lập trình C: Chương 2 - Ngô Công Thắng
10 p | 61 | 5
-
Chương 2: Các kiểu dữ liệu thao tác
7 p | 58 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 2 - ThS. Thiều Quang Trung (2018)
41 p | 33 | 4
-
Bài giảng Lập trình hướng đối tượng (Object-Oriented Programming) - Chương 1-2: Các kiểu dữ liệu cơ bản trong C++
12 p | 6 | 3
-
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 2: Các kiểu dữ liệu và thao tác (GV. Nguyễn Nhật Nam)
36 p | 26 | 3
-
Bài giảng Hệ thống máy tính và ngôn ngữ lập trình - Chương 2: Các kiểu dữ liệu và thao tác
24 p | 44 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Hệ thống máy tính và ngôn ngữ C: Chương 2 - TS. Nguyễn Phúc Khải
24 p | 4 | 3
-
Bài giảng Lập trình nâng cao (Advanced Programming) - Chương 2: Các kiểu dữ liệu cơ sở
5 p | 6 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn