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?
- Data Structures → See data structures build and rearrange, step by step
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.