Chuyển tới nội dung chính
Z

Data Structures

Stacks, queues, trees, heaps & hash tables — how they store and retrieve

Choosing the right data structure is often what separates a slow program from a fast one. Each structure trades off how quickly you can insert, remove, search or order data.

Linear structures

Stacks (last-in, first-out) and queues (first-in, first-out) impose an access order — stacks power undo and recursion, queues power scheduling and BFS. Linked lists chain nodes with pointers, giving cheap insertion and deletion anywhere without shifting elements, at the cost of no random access.

Hierarchical & keyed structures

Binary search trees keep keys ordered so lookups, insertions and range queries run in O(log n) on a balanced tree. Heaps are partially-ordered trees that surface the minimum or maximum in O(log n) — the engine behind priority queues and heap sort. Hash tables map keys to buckets through a hash function for average O(1) lookup, at the cost of unordered storage and occasional collisions.

The visualizers below let you push, pop, insert and delete to see exactly how each structure rearranges itself.

Try it interactively

Trình trực quan hóa Stack

Stack LIFO tương tác — push và pop với con trỏ top có hoạt ảnh và điều khiển từng bước. Chạy ngay trong trình duyệt.

Mở công cụ

Trình trực quan hóa hàng đợi

Hàng đợi FIFO tương tác — thêm (enqueue) và lấy ra (dequeue) phần tử với hoạt ảnh con trỏ front/rear và các nút điều khiển từng bước. Chạy ngay trong trình duyệt.

Mở công cụ

Trình trực quan hóa danh sách liên kết

Danh sách liên kết đơn tương tác — chèn đầu/cuối, tìm kiếm, xóa với hoạt ảnh duyệt con trỏ và các nút điều khiển từng bước. Chạy ngay trong trình duyệt.

Mở công cụ

Trình trực quan hóa cây tìm kiếm nhị phân

Cây tìm kiếm nhị phân tương tác — chèn, tìm kiếm, xóa với hình ảnh cây động, điều khiển từng bước và mã giả. Chạy ngay trên trình duyệt.

Mở công cụ

Trình trực quan hóa Binary Heap

Binary max-heap tương tác — thêm phần tử (insert) và lấy ra giá trị lớn nhất (extract-max) với hoạt ảnh sift-up / sift-down, có điều khiển từng bước và pseudocode. Chạy hoàn toàn trong trình duyệt.

Mở công cụ

Trình trực quan hóa Hash Table

Hash table tương tác dùng separate chaining — insert, search, delete với hiệu ứng animation cho việc băm giá trị và xử lý va chạm. Chạy ngay trên trình duyệt.

Mở công cụ

Prefer a focused tool?

Câu hỏi thường gặp

Hash table là gì?

Hash table lưu trữ các cặp key/value trong một mảng gồm nhiều bucket, sử dụng hash function để tính chỉ số bucket tương ứng với mỗi key, giúp các thao tác insert, search và delete đạt tốc độ gần như hằng số.

Va chạm hash (hash collision) là gì?

Là khi hai key khác nhau lại được băm ra cùng một bucket. Công cụ này xử lý va chạm bằng separate chaining — mỗi bucket chứa một danh sách liên kết (linked list) các entry.

Độ phức tạp thời gian của các thao tác hash table là gì?

Trung bình là O(1) cho insert, search và delete. Trường hợp xấu nhất là O(n) khi nhiều key cùng va chạm vào một bucket.

Công cụ này dùng hash function nào?

Một hash function modulo đơn giản, index = value % 7, để các bucket dễ theo dõi. Hash table thực tế dùng hàm băm mạnh hơn và tự resize để giữ chuỗi ngắn.