• Định nghĩa: Danh sách liên kết (DSLK) là một danh sách mà các phần tử được kết nối với nhau nhờ vào vùng liên kết của chúng.. • Một phần tử của DSLK bao gồm 2 vùng chính: – Vùng chứ[r]
(1)CHƯƠNG
KIỂU DANH SÁCH LIÊN KẾT
(2)• Khái niệm danh sách liên kết
1
• Các phép tính danh sách liên kết đơn
2
• Các phép tính danh sách liên kết kép
3
• Ứng dụng danh sách liên kết
(3)Danh sách liên kết
• Định nghĩa: Danh sách liên kết (DSLK) danh sách mà phần tử kết nối với nhờ vào vùng liên kết chúng
• Một phần tử DSLK bao gồm vùng chính: – Vùng chứa thơng tin
– Vùng chứa địa chỉ, cịn gọi vùng liên kết
• DSLK cấu trúc liệu động nên thực phép thêm vào, loại bỏ phần tử chạy chương trình
• Việc lưu trữ DSLK tốn nhớ danh sách đặc phải chứa thêm vùng liên kết
(4)– Danh sách liên kết đơn: phần tử liên kết với phần tử đứng sau danh sách:
– Danh sách liên kết kép: phần tử liên kết với phần tử đứng trước sau danh sách:
– Danh sách liên kết vòng: phần tử cuối danh sách liên kết với phần tử đầu danh sách:
A B X Z Y
(5)Danh sách liên kết
– Danh sách liên kết đơn vòng
– Danh sách liến kết kép vòng
5 GV Thiều Quang Trung
A B X Z Y
(6)1 Khởi tạo danh sách
2 Kiểm tra danh sách rỗng
3 Tìm kiếm phần tử danh sách Thêm phần tử vào danh sách
5 Hủy phần tử khỏi danh sách Duyệt danh sách
(7)Danh sách liên kết đơn
• Định nghĩa: DSLK đơn loại DSLK mà vùng địa phần tử chứa địa phần tử
• Phần tử cuối DSLK đơn trỏ đến NULL
GV Thiều Quang Trung
A B X Z Y
head
(8)• Ví dụ: Ta có danh sách theo dạng bảng sau Ta có danh sách liên kết :
Joe – Marta – Bill – Koch - Sahra
Address Name Age Link
100 Joe 20 140
110 Bill 42 500
140 Marta 27 110
230 Sahra 25 NULL
… … …
(9)Cài đặt danh sách liên kết đơn
• Khai báo kiểu phần tử kiểu danh sách liên kết đơn • Để đơn giản ta xét node gồm vùng chứa liệu kiểu
số nguyên:
typedef struct NODE // kiểu của một phần tử trong danh sách
{
int info;
NODE *pNext; };
typedef struct LIST // kiểu danh sách liên kết
{
NODE *phead; };
• Trong thực tế biến info kiểu struct
(10)