Mục lục bài viết

Bài này sẽ giới thiệu về cấu trúc dữ liệu danh sách liên kết (Linked List). Đây là một trong những cấu trúc dữ liệu kinh điển thường được nhắc đến. Linked List có nhiều loại khác nhau. Hãy cùng nhau tìm hiểu các đặc điểm của từng loại Linked List nào nhé!

1. Danh sách liên kết (Linked List) là gì?

Một danh sách liên kết (Linked List) là một cấu trúc dữ liệu tuyến tính, bao gồm một chuỗi các node kết nối với nhau. Mỗi node có thể xem như một phần tử trong danh sách. Mỗi node sẽ lưu trữ dữ liệu (data) của node đó và địa chỉ (address) của node kế tiếp. Bên dưới là minh họa cấu trúc dữ liệu danh sách liên kết.

Singly linked list

Danh sách liên kết phải có node bắt đầu, được gọi là HEAD. Node cuối cùng được gọi là TAIL. Mỗi node có nhiều nhất 1 phần tử đứng trước cũng như có nhiều nhất 1 phần tử đứng sau.

Có nhiều trường hợp trong thực tế có thể được lưu trữ bằng cách sử dụng Linked List như:

    • Danh sách học sinh
    • Danh mục sách trong thư viện
    • Danh bạ điện thoại
    • Danh sách các nhân viên trong công ty
    • …

2. Các loại danh sách liên kết

Có nhiều loại danh sách liên kết như danh sách liên kết đơn (singly linked list), danh sách liên kết kép (doubly linked list), danh sách liên kết vòng (circular linked list).

Danh sách liên kết đơn (singly linked list)

Singly linked list

Mỗi phần tử chỉ liên kết với phần tử đứng sau nó trong danh sách.

Danh sách liên kết kép (doubly linked list)

Doubly linked list

Mỗi phần tử liên kết với phần tử đứng trước và đứng sau nó trong danh sách.

Danh sách liên kết vòng (circular linked list)

Đặc điểm của Circular Linked List là phần tử cuối danh sách liên kết với phần tử đầu danh sách. Có 2 loại danh sách liên kết vòng là:

Danh sách liên kết đơn vòng
Circular linked list
Danh sách liên kết đôi vòng
Linked list đôi vòng

Ở những bài sau, chúng ta sẽ tìm hiểu về cách xây dựng các loại danh sách liên kết cũng như những thao tác cơ bản trên chúng.

Tác giả

HV Lee

500+ bài viết về lập trình, phần cứng, mạng máy tính và công nghệ. Chia sẻ kiến thức từ những gì đã học, đã dạy và đã trải nghiệm — để người học CNTT hiểu sâu hơn và làm được nhiều hơn.

Gợi ý tiếp theo

Xây dựng danh sách liên kết đơn với con trỏ (pointer)

Học tiếp