Font size
WorksheetsCấu trúc dữ liệu
Total questions: 106
Worksheet time: 53mins
Cấu trúc dữ liệu là gì?
Cách tổ chức, lưu trữ dữ liệu để sử dụng hiệu quả.
Một ngôn ngữ lập trình.
Một hệ điều hành.
Một phần cứng máy tính.
Kiểu dữ liệu trừu tượng (ADT) là gì?
Mô tả dữ liệu và các phép toán trên nó mà không quan tâm cách cài đặt.
Một kiểu dữ liệu nguyên thủy.
Một hàm xử lý dữ liệu.
Một lớp đối tượng trong OOP.
Mục đích chính của cấu trúc dữ liệu là gì?
Tăng hiệu quả lưu trữ và truy xuất dữ liệu.
Tăng độ bảo mật.
Giảm độ chính xác dữ liệu.
Tăng kích thước bộ nhớ.
Mỗi cấu trúc dữ liệu đều đi kèm với gì?
Một tập các phép toán cơ bản.
Một giao diện đồ họa.
Một hàm nhập xuất.
Một thuật toán sắp xếp.
Cấu trúc dữ liệu chia thành mấy loại chính?
2
3 (tuyến tính, phi tuyến tính, và hỗn hợp)
4
5
Mảng là gì?
Một tập hợp phần tử cùng kiểu, lưu liên tiếp trong bộ nhớ.
Tập hợp các phần tử khác kiểu.
Một danh sách liên kết.
Một con trỏ.
Truy cập phần tử mảng cần biết gì?
Tên mảng và chỉ số.
Giá trị của phần tử.
Địa chỉ ô nhớ đầu tiên.
Độ dài chuỗi.
Chỉ số mảng trong C bắt đầu từ đâu?
0
1
2
Tùy compiler.
Ưu điểm của mảng là gì?
Truy cập phần tử nhanh theo chỉ số.
Dễ thêm phần tử giữa mảng.
Giảm kích thước bộ nhớ.
Dễ thay đổi kích thước.
Nhược điểm của mảng là gì?
Kích thước cố định, khó chèn/xóa.
Truy cập chậm.
Tốn CPU.
Không lưu được dữ liệu kiểu ký tự.
Danh sách liên kết là gì?
Tập hợp các nút, mỗi nút chứa dữ liệu và con trỏ đến nút kế.
Dãy phần tử lưu liên tiếp.
Một mảng tĩnh.
Một tập tin.
Nhược điểm của danh sách liên kết là?
Truy cập ngẫu nhiên chậm.
Không thể mở rộng.
Tốn ít bộ nhớ.
Không lưu được ký tự.
Danh sách liên kết đơn là gì?
Mỗi nút có 1 con trỏ trỏ đến nút kế tiếp.
Mỗi nút có 2 con trỏ.
Các nút trỏ ngược nhau.
Chỉ lưu phần tử đầu tiên.
Ngăn xếp hoạt động theo nguyên tắc nào?
Vào sau ra trước (LIFO)
Vào trước ra trước
Ngẫu nhiên
Ưu tiên theo giá trị
Thao tác push trên ngăn xếp được định nghĩa là gì?
Thêm phần tử vào đỉnh ngăn xếp
Xóa phần tử khỏi đỉnh
Truy cập phần tử đầu tiên
Làm rỗng ngăn xếp
Thao tác pop trên ngăn xếp là gì?
Lấy và xóa phần tử ở đỉnh ngăn xếp
Thêm phần tử mới
Đếm số phần tử
Kiểm tra rỗng
Ứng dụng điển hình của ngăn xếp là gì?
Quản lý lời gọi hàm (call stack)
Truy cập file nhanh
Xử lý hàng đợi ưu tiên
Lưu danh sách liên kết
Điều gì xảy ra khi push vào một ngăn xếp đã đầy?
Tràn ngăn xếp (stack overflow)
Lỗi cú pháp
Lỗi logic
Tràn bộ nhớ heap
Hàng đợi hoạt động theo nguyên tắc nào?
Vào trước ra trước (FIFO)
Vào sau ra trước
Ngẫu nhiên
Ưu tiên theo độ lớn
Thao tác enqueue là gì?
Thêm phần tử vào cuối hàng
Lấy phần tử đầu
Làm rỗng hàng
Xóa phần tử cuối
Thao tác dequeue là gì?
Lấy và xóa phần tử đầu hàng
Thêm phần tử đầu hàng
Đếm phần tử
Kiểm tra rỗng
Hàng đợi vòng (circular queue) giúp giải quyết vấn đề gì?
Tái sử dụng ô trống khi phần tử bị xóa
Tăng bộ nhớ
Giảm tốc độ
Sắp xếp nhanh hơn
Một ứng dụng tiêu biểu của hàng đợi là gì?
Quản lý tiến trình, in ấn, hàng đợi yêu cầu
Lưu lịch sử trình duyệt
Xử lý đệ quy
Sắp xếp mảng
Chọn phát biểu đúng để phân biệt LIFO và FIFO trong việc xử lý phần tử đầu/cuối cấu trúc dữ liệu.
LIFO lấy/xóa ở đỉnh; FIFO lấy/xóa ở đầu hàng
LIFO luôn lấy ở đáy; FIFO ở đỉnh
Cả LIFO và FIFO đều lấy ở cuối
LIFO và FIFO không quy định vị trí lấy/xóa
Cây nhị phân được định nghĩa là gì?
Mỗi nút có tối đa 2 nút con.
Mỗi nút có 3 nút con.
Cấu trúc tuyến tính.
Mảng 2 chiều.
Nút gốc (root) là gì?
Nút không có cha (parent).
Nút có 2 con.
Nút cuối cùng.
Nút có giá trị nhỏ nhất.
Nút lá là gì?
Nút không có con.
Nút có 2 con.
Nút có 1 con.
Nút gốc.
Độ cao của cây là gì?
Số cạnh dài nhất từ gốc đến lá.
Tổng số nút.
Số nhánh ngang.
Số lượng cây con.
Các cách duyệt cây nhị phân gồm:
Tiền tự, trung tự, hậu tự.
Đệ quy, lặp, ngẫu nhiên.
Vòng tròn, xoắn, chéo.
Trên xuống, trái phải.
Duyệt trung tự (In-order) của cây nhị phân in ra kết quả như thế nào (nếu là cây tìm kiếm)?
Thứ tự tăng dần.
Giảm dần.
Ngẫu nhiên.
Thứ tự nhập.
Cây tìm kiếm nhị phân (BST) có tính chất nào sau đây?
Trái < gốc < phải.
Trái > phải.
Gốc luôn lớn nhất.
Ngẫu nhiên.
Khi chèn phần tử vào BST, thao tác so sánh diễn ra như thế nào?
Giá trị nút hiện tại, rồi đi trái hoặc phải.
Nút gốc duy nhất.
Tất cả nút.
Ngẫu nhiên.
Xóa nút trong BST có mấy trường hợp chính?
3 (nút lá, 1 con, 2 con).
2.
4.
1.
Cây cân bằng (balanced tree) là:
Hiệu độ cao hai cây con ≤ 1 ở mọi nút.
Có cùng số nút hai bên.
Cây có độ cao tối đa.
Cây không có lá.
Dạng cây cân bằng thông dụng là:
AVL, Red-Black Tree.
B-Tree, Stack.
Binary Heap.
Linked List.
Cây nhị phân đầy đủ (Full Binary Tree) có đặc trưng nào?
Mỗi nút có 0 hoặc 2 con.
Có một con duy nhất.
Có 3 con.
Cây rỗng.
Cây hoàn chỉnh (Complete Binary Tree) có mô tả đúng là:
Tất cả các mức (trừ mức cuối) đều đầy đủ.
Tất cả các nút có 2 con.
Có số nút bằng 2n .
Không có lá.
Heap là gì?
Cây nhị phân thỏa mãn tính chất cha ≥ hoặc ≤ con.
Danh sách liên kết đôi.
Ngăn xếp nhiều lớp.
Cấu trúc tuần tự.
Tìm kiếm tuần tự (Linear Search) là:
Duyệt từng phần tử đến khi tìm thấy.
Tìm theo cây.
Theo chỉ số trung bình.
Theo bảng băm.
Điều kiện tiên quyết để áp dụng Tìm kiếm nhị phân (Binary Search) là gì?
Dữ liệu phải được sắp xếp trước.
Dữ liệu có dạng cây nhị phân.
Mảng hai chiều.
Dữ liệu ngẫu nhiên.
Tư tưởng cốt lõi của Tìm kiếm nhị phân là:
Chia đôi vùng tìm kiếm mỗi lần.
Duyệt hết danh sách.
Chọn phần tử ngẫu nhiên để so sánh.
Sử dụng bảng tra cứu.
Độ phức tạp thời gian của Tìm kiếm tuần tự là:
O(n)
O(log n)
O(1)
O(n2)
Ưu điểm chính của Tìm kiếm nhị phân so với tuyến tính là:
Nhanh hơn khi dữ liệu đã sắp xếp.
Dễ cài đặt hơn tuyến tính.
Không cần mảng.
Áp dụng cho mọi loại dữ liệu không sắp xếp.
Nhược điểm chính của Tìm kiếm nhị phân là:
Chỉ áp dụng cho dữ liệu đã sắp xếp.
Không chính xác.
Dễ lỗi do so sánh.
Tốn bộ nhớ hơn.
Một mảng có 1024 phần tử. Số lần so sánh tối đa của Tìm kiếm nhị phân xấp xỉ bằng:
≈10 lần
100
512
32
Cơ chế hoạt động của Bubble Sort là gì?
So sánh từng cặp kề và hoán đổi khi sai thứ tự.
Chọn phần tử nhỏ nhất mỗi lần.
Chèn phần tử vào đúng chỗ.
Chia đôi dãy.
Độ phức tạp trung bình của Bubble Sort là:
O(n2)
O(n log n)
O(n)
O(1)
Thuật toán sắp xếp chọn (Selection Sort):
Chọn phần tử nhỏ nhất, đưa lên đầu dãy.
Chèn vào đúng vị trí.
Dựa vào phân hoạch.
Duyệt đệ quy.
Mô tả đúng nhất về Insertion Sort:
Chèn từng phần tử vào đúng vị trí trong mảng con đã sắp.
Chia đôi mảng.
Chọn phần tử ngẫu nhiên.
Hoán đổi 2 phần tử cuối.
Độ phức tạp trung bình của Insertion Sort là:
O(n2)
O(log n)
O(1)
O(n log n)
Quick Sort dựa trên nguyên lý nào?
Chia để trị (Divide and Conquer).
Lặp liên tục.
Duyệt ngẫu nhiên.
Đếm số lần đổi chỗ.
Bước đầu của Quick Sort là gì?
Chọn phần tử chốt (pivot) để phân hoạch mảng.
Tìm phần tử nhỏ nhất.
Tính trung bình.
Đếm phần tử.
Độ phức tạp trung bình của Quick Sort là:
O(n log n)
O(n2)
O(n)
O(1)
Khi dữ liệu đã gần sắp xếp, Quick Sort có thể chậm chủ yếu do:
Chọn pivot xấu dẫn đến phân hoạch lệch.
Bộ nhớ thiếu.
Không so sánh được.
Tính sai thứ tự.
Trong bối cảnh tìm kiếm trên dữ liệu ngẫu nhiên lớn, cấu trúc nào thường cho hiệu quả tốt nhất?
Bảng băm (Hash Table).
Tìm kiếm tuần tự.
Duyệt cây.
Duyệt vòng lặp.
Cấu trúc dữ liệu lưu phần tử theo nguyên tắc LIFO là:
Hàng đợi
Danh sách liên kết
Ngăn xếp (Stack)
Cây
Độ phức tạp trung bình của Insertion Sort là gì?
O(n2)
O(log n)
O(1)
O(n log n)
Quick Sort dựa trên nguyên lý nào?
Chia để trị (Divide and Conquer)
Lặp liên tục
Duyệt ngẫu nhiên
Đếm số lần đổi chỗ
Bước đầu quan trọng của Quick Sort là gì?
Chọn phần tử chốt (pivot) để phân hoạch mảng
Tìm phần tử nhỏ nhất
Tính trung bình
Đếm phần tử
Độ phức tạp trung bình của Quick Sort là gì?
O(n log n)
O(n2)
O(n)
O(1)
Khi dữ liệu đã sắp, Quick Sort có thể chậm vì lý do nào?
Chọn pivot xấu dẫn đến phân hoạch lệch
Bộ nhớ thiếu
Không so sánh được
Tính sai thứ tự
Trong danh sách liên kết đơn, mỗi nút thường chứa gì?
Chỉ dữ liệu
Dữ liệu và con trỏ tới nút kế tiếp
Hai con trỏ
Con trỏ tới nút trước
Mảng có thể truy cập phần tử bất kỳ trong thời gian nào?
O(1)
O(n)
O(log n)
O(n2)
Trong danh sách liên kết đơn, truy cập phần tử thứ k mất thời gian bao nhiêu?
O(1)
O(n)
O(log n)
O(n log n)
Ngăn xếp thường được dùng trong tác vụ nào sau đây?
Tìm kiếm nhị phân
Duyệt đệ quy hoặc kiểm tra dấu ngoặc
Xếp hàng chờ
Tính trung bình
Hàng đợi (Queue) hoạt động theo nguyên tắc nào?
FIFO (First In First Out)
LIFO
FILO
Random
Cấu trúc dữ liệu phù hợp để mô phỏng hàng chờ máy in là gì?
Hàng đợi (Queue)
Ngăn xếp
Danh sách liên kết
Cây
Độ phức tạp trung bình của tìm kiếm tuyến tính là gì?
O(log n)
O(n)
O(1)
O(n2)
Cấu trúc dữ liệu nào phù hợp nhất để cài đặt ngăn xếp?
Mảng hoặc danh sách liên kết
Cây
Hàng đợi
Hash table
Phép duyệt Inorder trong cây nhị phân thực hiện theo thứ tự nào?
Node - Trái - Phải
Trái - Node - Phải
Phải - Node - Trái
Node - Phải - Trái
Trong cây nhị phân có n nút, số cạnh là bao nhiêu?
n - 1
n
n + 1
n / 2
Cấu trúc dữ liệu nào dùng để biểu diễn cây nhị phân trong bộ nhớ?
Hàng đợi
Mảng
Con trỏ (linked structure)
Danh sách
Cấu trúc dữ liệu nào cho phép thêm và xóa ở cả hai đầu?
Deque (Double Ended Queue)
Stack
Queue
List
Trong hàng đợi tròn, khi rear đạt giới hạn mảng thì thao tác đúng là gì?
Quay về đầu mảng nếu còn chỗ trống
Dừng chương trình
Tràn bộ nhớ
Thoát hàng đợi
Độ phức tạp của thuật toán tìm kiếm nhị phân là gì?
O(n)
O(log n)
O(1)
O(n2)
Điều kiện để áp dụng tìm kiếm nhị phân là gì?
Dữ liệu đã được sắp xếp
Dữ liệu ngẫu nhiên
Dữ liệu là cây
Dữ liệu là danh sách liên kết
Trong sắp xếp chọn (Selection Sort), sau mỗi lần lặp sẽ xảy ra điều gì?
Đưa phần tử nhỏ nhất về đầu dãy
Đưa phần tử lớn nhất về cuối
Hoán vị ngẫu nhiên
Không thay đổi
Độ phức tạp trung bình của sắp xếp chọn (Selection Sort) là gì?
O(log n)
O(n log n)
O(n2)
O(n)
Thuật toán sắp xếp nào hoạt động hiệu quả nhất trên dữ liệu nhỏ?
Quick Sort
Insertion Sort
Merge Sort
Heap Sort
Đặc điểm nổi bật của Bubble Sort là gì?
Tách mảng thành nhiều phần
So sánh từng cặp phần tử liên tiếp và hoán đổi
Chia để trị
Dựa trên ngăn xếp
Khi dùng cây tìm kiếm nhị phân (BST), độ phức tạp trung bình của phép tìm kiếm là gì?
O(n)
O(log n)
O(n2)
O(1)
Cấu trúc dữ liệu nào hỗ trợ tìm kiếm, thêm, xóa trong O(log n)?
Cây tìm kiếm nhị phân cân bằng (AVL, Red-Black)
Mảng
Hàng đợi
Danh sách
Danh sách liên kết đôi có bao nhiêu con trỏ trong mỗi nút?
1
2 (tới trước và sau)
3
0
Cấu trúc dữ liệu nào không có giới hạn cố định về kích thước?
Danh sách liên kết
Mảng
Stack tĩnh
Queue tĩnh
Thứ tự duyệt Preorder trong cây nhị phân là gì?
Node - Trái - Phải
Trái - Node - Phải
Phải - Node - Trái
Trái - Phải - Node
Thứ tự duyệt Postorder trong cây nhị phân là gì?
Node - Trái - Phải
Trái - Phải - Node
Phải - Node - Trái
Node - Phải - Trái
Khi chèn vào danh sách liên kết đôi, cần cập nhật gì?
Một con trỏ
Hai con trỏ (next, prev)
Không con trỏ nào
Toàn bộ danh sách
Khi xóa phần tử đầu tiên trong danh sách liên kết đơn, thao tác đúng là gì?
Chỉ gán NULL
Cập nhật con trỏ đầu sang nút kế tiếp
Duyệt hết danh sách
Không cần làm gì
Khi stack rỗng, thao tác Pop sẽ gây ra lỗi gì?
Lỗi tràn ngược (Underflow)
Tràn bộ nhớ
Lỗi cú pháp
Không lỗi
Khi queue đầy, thao tác Enqueue sẽ gây ra hiện tượng gì?
Lỗi tràn (Overflow)
Underflow
Dừng chương trình
Không lỗi
Cấu trúc dữ liệu nào dùng tốt cho duyệt theo chiều sâu (DFS)?
Stack
Queue
Mảng
List
Cấu trúc dữ liệu nào dùng cho duyệt theo chiều rộng (BFS)?
Stack
Queue
Mảng
Tree
Trong thuật toán Quick Sort, phần tử "pivot" dùng để làm gì?
Chia mảng thành hai phần
Sắp xếp trực tiếp
Xóa phần tử
Làm trung bình
Độ phức tạp trung bình của Quick Sort là:
O(n2)
O(n log n)
O(log n)
O(n)
Độ phức tạp trung bình của Merge Sort là:
O(n2)
O(n log n)
O(n)
O(log n)
Khi dùng danh sách liên kết để cài đặt stack, thao tác Push diễn ra ở đâu?
Đầu danh sách
Cuối danh sách
Giữa danh sách
Bất kỳ
Khi dùng danh sách liên kết để cài đặt queue, thao tác Enqueue thực hiện ở đâu?
Cuối danh sách
Đầu danh sách
Giữa danh sách
Bất kỳ
Cấu trúc dữ liệu nào phù hợp để cài đặt lời gọi hàm lồng nhau trong chương trình?
Stack
Queue
List
Tree
Lợi ích của danh sách liên kết so với mảng?
A. Thêm/xóa linh hoạt không cần dời phần tử.
B. Truy cập ngẫu nhiên nhanh hơn.
C. Tiết kiệm bộ nhớ.
D. Dễ dàng sắp xếp.
Danh sách liên kết đôi là gì?
A. Mỗi nút có con trỏ trỏ tới nút trước và sau.
B. Có 1 con trỏ duy nhất.
C. Dạng mảng 2 chiều.
D. Dạng danh sách vòng.
Duyệt cây là gì?
A. Thăm tất cả các nút theo một thứ tự xác định.
B. Xóa các nút không cần.
C. Thêm nút mới.
D. Tính độ sâu
Độ phức tạp của tìm kiếm nhị phân là:
A. O(log n)
B. O(n)
C. O(n²)
D. O(√n)
Khi tìm kiếm thất bại, thuật toán sẽ:
A. Kết thúc sau khi không còn vùng tìm kiếm.
B. Báo lỗi cú pháp.
C. Quay lại đầu mảng.
D. Lặp vô hạn.
Thuật toán tìm kiếm tốt nhất cho dữ liệu ngẫu nhiên lớn là:
A. Sử dụng bảng băm (Hash Table).
B. Tìm kiếm tuần tự.
C. Duyệt cây.
D. Duyệt vòng lặp.
Mục đích của sắp xếp là gì?
A. Sắp xếp dữ liệu theo thứ tự tăng/giảm để dễ tìm kiếm, thống kê.
B. Tăng bộ nhớ.
C. Giảm CPU.
D. Tạo file mới.
Trong danh sách liên kết đơn, mỗi nút chứa:
A. Chỉ dữ liệu
B. Dữ liệu và con trỏ tới nút kế tiếp
C. Hai con trỏ
D. Con trỏ tới nút trước
