Tải bản đầy đủ (.pdf) (10 trang)

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 4 - Th.S Thiều Quang Trung

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>

<b>C</b>

<b>HƯƠNG</b>

<b> 4 </b>



<b>K</b>

<b>IỂU</b>

<b> D</b>

<b>ANH</b>

<b> S</b>

<b>ÁCH</b>

<b> L</b>

<b>IÊN</b>

<b> K</b>

<b>ẾT</b>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

• Khái niệm danh sách liên kết


<b>1 </b>



<b>• Các phép tính trên danh sách liên kết đơn </b>


<b>2 </b>



<b>• Các phép tính trên danh sách liên kết kép </b>


<b>3 </b>



<b>• Ứng dụng của danh sách liên kết </b>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>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


chương trình.


• 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.


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<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


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>Danh sách liên kết </b>



<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


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

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


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>Danh sách liên kết đơn </b>



<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>


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<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


… … …


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>Cài đặt danh sách liên kết đơn </b>



• 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


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10></div>

<!--links-->

×