Top 10 cấu trúc dữ liệu thường dùng dân Lập trình nên biết!

11:40 23/08/2023

Có những loại cấu trúc dữ liệu nào phổ biến nhất? Hãy cùng khám phá trong bài viết dưới đây nhé!

List

List (danh sách) là một cấu trúc dữ liệu linh hoạt và cần thiết trong phát triển phần mềm. List tốt trong việc lưu trữ, thao tác với dữ liệu đã được sắp xếp. Bên cạnh đó, nó hiệu quả nhất khi sử dụng trong nhiều ứng dụng như: quản lý task, bản tin trên mạng xã hội, thông tin user, hay giỏ hàng.

Array

Mảng là một cấu trúc dữ liệu cơ bản, mảng cung cấp một tập hợp có kích thước cố định và theo thứ tự. Mảng đặc biệt phù hợp trong trường hợp kích thước của tập hợp được biết trước hoặc không thay đổi thường xuyên.

Array được dùng nhiều trong phép toán, lưu trữ tập dữ liệu lớn, hoặc khi cần truy cập ngẫu nhiên đến một phần tử của tập hợp.

Array còn được sử dụng phổ biến trong việc xử lý ảnh, ở đó dữ liệu màu của pixel có thể thể hiện trong một mảng hai chiều. Điều đó thuận lợi cho việc thao tác và chuyển đổi hình ảnh.

Stack

Stack dựa trên nguyên tắc Last In – First Out (đưa vào sau, lấy ra trước). Stack hoàn hảo hôc trợ cho thao tác undo/redo trong các trình biên tập văn bản hoặc duy trì lịch sử duyệt web trên trình duyệt.

Trong trình biên tập văn bản, Stack làm cho việc quay lại trạng thái trước đó một cách dễ dàng.

Queue

Dựa trên nguyên tắc First In First Out (FIFO – vào trước ra trước). Phù hợp với việc quản lý các tác vụ in ấn, gửi các hành động trong game.

Trong ứng dụng chat, Queue có thể được sử dụng để lưu trữ các thông điệp theo thứ tự mà chúng được nhận, nó đảm bảo thông điệp được hiển thị đúng thứ tự cho người nhận.

Heap

Sử dụng cho việc lên lịch tác vụ (task scheduling) và quản lý bộ nhớ (memory management). Heap đặc biệt hữu dụng trong việc triển khai hàng đợi ưu tiên (priority queues), ở đó cần truy cập đến các phần tử có độ ưu tiên cao nhất, thấp nhất một cách hiệu quả.

Tree

Tree tổ chức dữ liệu theo cấp bậc. Tree hữu dụng cho việc thể hiện dữ liệu dựa trên cấp bậc tự nhiên hoặc mối quan hệ.

Nó có thể được sử dụng phổ biến trong các ứng dụng như: đánh chỉ mục cơ sở dữ liệu, ra quyết định của AI, hay tổ chức file hệ thống.

Hash Table

Hash Table cho phép thực hiện tìm kiếp, chèn, xóa dữ liệu hiệu quả.

Hash Table được sử dụng để tham chiếu keys đến vị trí lưu trữ tương ứng. Nó cho phép truy cập liên tục đến các giá trị lưu trữ. Hash Table được sử dụng rộng rãi trong nhiều ứng dụng như: công cụ tìm kiếm (search engines), caching system (như redis), hoặc trình biên dịch, thông dịch.

Trong các công cụ tìm kiếm, Hash Table có thể dùng để lưu trữ và nhanh chóng lấy ra các dữ liệu đã được đánh chỉ mục theo từ khóa. Từ đó cung cấp kết quả tìm kiếm nhanh và hợp lệ.

Suffix Tree

Suffix Tree chuyên sử dụng cho tìm kiếm một chuỗi trong một tài liệu. Do đó nó hoàn hảo cho các công cụ chỉnh sửa văn bản và thuật toán tìm kiếm.

Trong các công cụ tìm kiếm, Suffix Tree có thể được dùng để xác định tất cả các lần xuất hiện của một từ khóa một cách hiệu quả trong một văn bản lớn.

Graph

Graph là tất cả những gì về theo dõi các mối quan hệ, hoặc tìm kiếm đường đi. Do đó nó trở nên vô giá trong mạng xã hội, công cụ đề xuất, và thuật toán tìm kiếm đường đi.

Trong một mạng xã hội, một Graph có thể được dùng để thể hiện các mối quan hệ giữa các users. Nó cho phép thực hiện các tính năng như gợi ý bạn bè, hoặc phân tích một mạng lưới xu hướng.

R – tree

R-tree có lợi thế trong việc tìm “hàng xóm” gần nhất. Chúng cực kì quan trọng cho các ứng dụng mapping hoặc dịch vụ liên quan tới địa lý. Trong các ứng dụng mapping, R-tree có thể được sử dụng để lưu trữ dữ liệu không gian, như các điểm quan tâm (points of interest). Điều này cho phép truy vấn tìm kiếm địa điểm gần nhất dựa vào vị trí hiện tại của user.

Bài viết có sự tham khảo từ: System Design Interview by Alex Xu & Sahn Lam

Bộ môn Ứng dụng Phần mềm
Trường Cao đẳng FPT Mạng cá cược bóng đá cơ sở Đà Nẵng

Cùng chuyên mục

Đăng Kí học Fpoly 2023