Cây (Trees).[r]
(1)NGƠN NGỮ LẬP TRÌNH
Bài 10:
Các Kiểu Dữ Liệu Trừu Tượng: Danh sách liên kết,
Ngăn xếp, Hàng đợi
Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn
Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT
(2)NỘI DUNG
1 Các nút (Nodes) Danh sách liên kết
1 Tạo, tìm kiếm
2 Ứng dụng danh sách liên kết Ngăn xếp (Stacks),
2 Hàng đợi (Queue)
3 Lớp bạn
3 Iterators
1 Con trỏ iterators
(3)GIỚI THIỆU
Danh sách liên kết
Được xây dựng sử dụng trỏ
Tăng giảm kích thước thời gian chạy
Cây sử dụng trỏ
Con trỏ xương sống của những cấu trúc
Sử dụng biến động
Thư viện mẫu chuẩn (STL)
Có phiên định nghĩa sẵn vài cấu
trúc
(4)CÁCH TIẾP CẬN
Có cách để xử lý những cấu trúc dữ liệu
1 Cách tiếp cận C-style: sử dụng hàm cấu trúc toàn
cục với thứ public
2 Sử dụng lớp với biến thành viên private
hàm accessor – mutator
3 Sử dụng lớp bạn
(5)NÚT VÀ DANH SÁCH LIÊN KẾT
Danh sách liên kết
Một ví dụ đơn giản “cấu trúc liệu động” Bao gồm nhiều nút
Mỗi nút một biến kiểu cấu trúc hoặc đối tượng
của lớp (có thể tạo tự động với lệnh new)
Nút bao gồm trỏ trỏ tới nút khác Cung cấp “sự liên kết”
(6)(7)ĐỊNH NGHĨA NÚT
struct ListNode
{
string item; int count;
ListNode *link; };
typedef ListNode* ListNodePtr;
Chú ý sự tuần hoàn (circularity)
(8)CON TRỎ HEAD
Đối tượng với nhãn “head” không phải một nút:
ListNodePtr head;
Là trỏ đơn giản tới nút Chỉ tới nút danh sách
Head được sử dụng để lưu trữ vị trí đầu tiên
danh sách
(9)VÍ DỤ VỀ TRUY CẬP NÚT
(*head).count = 12;
Đặt biến thành viên count nút trỏ trỏ head
bằng 12
Toán tử alternate ->
Được gọi toán tử mũi tên (arrow operator)
Kí hiệu viết tắt kết hợp hai toán tử * Viết lại câu lệnh bằng: head->count=12;
cin>>head->item:
Gắn chuỗi nhập vào cho biến thành viên item
(10)DẤU HIỆU KẾT THÚC (END MARKERS)
Sử dụng NULL cho trỏ nút
Được xem “lính canh” (sentinel) cho nút Chỉ định khơng cịn liên kết sau nút
Cung cấp dấu hiệu kết thúc tương tự như cách
chúng ta sử dụng mảng được lấp đầy một phần