Skip to content

8 Cấu Trúc Dữ Liệu Phổ Biến Nhất Và Ứng Dụng

1. Array (Mảng)

  • Là gì: Tập hợp các phần tử nằm liên tiếp nhau trong bộ nhớ, cùng kiểu dữ liệu.
  • Truy cập: Dựa vào chỉ số (index), rất nhanh (O(1)).
  • Nhược điểm: Kích thước cố định, khó thêm/xóa giữa mảng.
  • Ứng dụng:
    • Lưu danh sách sản phẩm, điểm số, chuỗi ký tự.
    • Là nền tảng của các cấu trúc khác như Stack, Queue.

Ví dụ: int[] arr = {1, 2, 3, 4} → arr[0] là 1

2. Linked List (Danh sách liên kết)

  • Là gì: Gồm các phần tử (node), mỗi node chứa dữ liệu + con trỏ đến node kế tiếp.
  • Ưu điểm: Thêm/xóa linh hoạt, không cần dịch chuyển phần tử.
  • Nhược điểm: Truy cập chậm (O(n)), không truy cập trực tiếp được như mảng.
  • Ứng dụng:
    • Tạo Stack, Queue
    • Undo/Redo (mỗi bước là 1 node)
    • Danh sách playlist nhạc

Ví dụ: 1 → 2 → 3 → 4 → null

3. Stack (Ngăn xếp – LIFO)

  • Là gì: Cấu trúc vào sau ra trước (Last In – First Out).
  • Chỉ thao tác trên đỉnh (top): push (thêm), pop (lấy ra).
  • Ứng dụng:
    • Quay lui (backtracking)
    • Undo thao tác (word, photoshop)
    • Duyệt cây đệ quy

Ví dụ:

  • Đặt đĩa chồng lên nhau: Lấy ra phải lấy từ trên xuống
  • Code: push(1), push(2), pop() → ra 2

4. Queue (Hàng đợi – FIFO)

  • Là gì: Cấu trúc vào trước ra trước (First In – First Out).
  • Có hai đầu: enqueue (thêm vào cuối), dequeue (lấy từ đầu).
  • Ứng dụng:
    • Xử lý yêu cầu: hàng chờ in, gọi điện
    • Hệ điều hành: lập lịch CPU
    • BFS (duyệt đồ thị theo chiều rộng)
  • Ví dụ:
  • Xếp hàng mua vé: người đến trước được phục vụ trước
    • Hệ thống xử lý yêu cầu (server, in ấn)
    • BFS trong thuật toán tìm đường

5. Hash Table / Hash Map

  • Là gì: Lưu trữ dữ liệu dưới dạng (key, value) với key được mã hóa thành hash
  • Ưu điểm: Tìm kiếm/truy cập cực nhanh (~O(1))
  • Nhược điểm: Dễ xung đột hash nếu không xử lý tốt
  • Ứng dụng:
    • Từ điển
    • Cache dữ liệu (như Redis)
    • Đếm tần suất xuất hiện (đếm từ, ký tự)
  • Ví dụ:
  • Từ điển: "cat" → "con mèo"
  • hashMap.put("id123", "Nguyễn Văn A")
    • Tra cứu dữ liệu (từ điển, danh bạ)
    • Đếm số lần xuất hiện
    • Caching (Redis dùng dạng này)

6. Binary Tree (Cây nhị phân)

  • Là gì: Cấu trúc dạng cây, mỗi node có tối đa 2 con (trái & phải)
  • Ứng dụng:
  • Cây tìm kiếm nhị phân (Binary Search Tree – BST)
  • Lưu trữ phân cấp như thư mục
  • Cây biểu thức toán học
  • Tìm kiếm/log tìm kiếm nhanh hơn danh sách
    • Cây biểu thức toán học
    • Tổ chức dữ liệu dạng phân cấp
    • Tìm kiếm nhanh (cây tìm kiếm nhị phân – BST)

7. Heap (Đống)

  • Là gì: Cây nhị phân đặc biệt:
  • Ứng dụng:
    • Hàng đợi ưu tiên (Priority Queue)
    • Thuật toán Dijkstra
    • Heap Sort
    • Lấy k phần tử lớn/nhỏ nhất
  • Ví dụ:
  • Hàng đợi bệnh viện: người ưu tiên cao được xử lý trước dù đến sau
    • Hàng đợi ưu tiên (Priority Queue)
    • Thuật toán tìm K phần tử lớn nhất/nhỏ nhất
    • Dùng trong heap sort

8. Graph (Đồ thị)

  • Là gì: Gồm tập đỉnh (node) và tập cạnh (edge) biểu diễn mối quan hệ giữa các đỉnh
  • Có thể là: có hướng / vô hướng, có trọng số / không trọng số
  • Ứng dụng:
    • Mạng xã hội (user kết nối user)
    • Google Maps (đường đi giữa điểm A-B)
    • Gợi ý kết bạn, sản phẩm
  • Ví dụ:
  • User A kết bạn với B và C → graph có 3 node, 2 cạnh nối A-B và A-C
    • Mạng xã hội
    • Hệ thống giao thông
    • Tìm đường (Google Maps)
    • Gợi ý kết bạn (Facebook)

Tóm tắt nhanh:

Cấu trúcDùng khi nào?Ứng dụng thực tế
ArrayTruy cập nhanh, dữ liệu cố địnhDanh sách sản phẩm
Linked ListDữ liệu thay đổi linh hoạtUndo/Redo
StackQuay lui, xử lý lùiUndo, duyệt đệ quy
QueueXử lý theo lượtLập lịch in, xử lý task
Hash MapTìm kiếm cực nhanhTừ điển, đếm từ, cache
Binary TreeTìm kiếm nhanh, tổ chức phân cấpCây thư mục, phân loại
HeapƯu tiên xử lýPriority Queue, top K
GraphMối quan hệ giữa các đối tượngMạng xã hội, định tuyến

Published inAll

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *