Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (899.75 KB, 10 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
• Khái niệm danh sách liên kết
<b>• Các phép tính trên danh sách liên kết đơn </b>
<b>• Các phép tính trên danh sách liên kết kép </b>
<b>• Ứng dụng của danh sách liên kết </b>
<b>• Định nghĩa: Danh sách liên kết (DSLK) là một danh </b>
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ứa thơng tin
– Vùng chứa địa chỉ, còn gọi là vùng liên kết
• DSLK là cấu trúc dữ liệu động nên có thể thực hiện
các phép thêm vào, loại bỏ phần tử trong khi chạy
• Việc lưu trữ DSLK tốn bộ nhớ hơn danh sách đặc vì
phải chứa thêm vùng liên kết.
<b>– Danh sách liên kết đơn: mỗi phần tử liên kết với </b>
phần tử đứng sau nó trong danh sách:
<b>– Danh sách liên kết kép: mỗi phần tử liên kết với </b>
các phần tử đứng trước và sau nó trong danh
sách:
<b>– Danh sách liên kết vòng: phần tử cuối danh sách </b>
liên kết với phần tử đầu danh sách:
A B X Z Y
<b>– Danh sách liên kết đơn vòng </b>
<b>– Danh sách liến kết kép vòng </b>
5
GV. Thiều Quang Trung
A B X Z Y
1. Khởi tạo danh sách
2. Kiểm tra danh sách rỗng
3. Tìm kiếm 1 phần tử trong danh sách
4. Thêm 1 phần tử vào danh sách
5. Hủy 1 phần tử khỏi danh sách
6. Duyệt danh sách
<b>• Định nghĩa: DSLK đơn là loại DSLK mà vùng địa chỉ </b>
của mỗi phần tử chỉ chứa duy nhất một địa chỉ của
phần tử tiếp theo.
• Phần tử cuối cùng của DSLK đơn sẽ trỏ đến NULL
GV. Thiều Quang Trung 7
<b>A </b> <b>B </b> <b>X </b> <b>Z </b> <b>Y </b>
<b>head </b>
<b>• Ví dụ: </b> Ta có danh sách theo dạng bảng sau
Ta có danh sách liên kết là :
<b>Joe – Marta – Bill – Koch - Sahra </b>
<b>Address Name </b> <b>Age </b> <b>Link </b>
100 Joe 20 140
110 Bill 42 500
140 Marta 27 110
230 Sahra 25 NULL
… … …
• Khai báo kiểu của 1 phần tử và kiểu danh sách liên kết đơn.
• Để đơn giản ta xét mỗi node gồm vùng chứa dữ liệu là kiểu
số nguyên:
<b>typedef </b> <b>struct</b> <b>NODE </b><sub>// </sub><i>kiểu</i> <i>của</i> <i>một</i> <i>phần</i> <i>tử</i> <i>trong</i> <i>danh</i> <i><b>sách </b></i>
<b>{ </b>
<b> int </b> <b>info; </b>
<b>NODE *pNext; </b>
<b>}; </b>
<b>typedef </b> <b>struct</b> <b>LIST </b><sub>// </sub><i>kiểu</i> <i>danh</i> <i>sách</i> <i>liên</i> <i><b>kết </b></i>
<b>{ </b>
<b>NODE *phead; </b>
<b>}; </b>
• Trong thực tế biến info là một kiểu struct