Đáp án đúng: B
Câu hỏi liên quan
* A. Độ dài các trường không vượt quá 16 bit. Đây là một phát biểu đúng. Trường bit thường được sử dụng để lưu trữ các giá trị nhỏ, và độ dài của chúng thường giới hạn trong phạm vi nhỏ hơn một số byte nhất định. Trong nhiều trình biên dịch, giới hạn này thường là 16 bit hoặc 32 bit, tùy thuộc vào kiến trúc. Tuy nhiên, 16 bit là một giới hạn phổ biến hơn.
* B. Áp dụng được cho các trường có kiểu số nguyên và số thực. Trường bit chủ yếu được sử dụng cho các kiểu số nguyên. Việc sử dụng với số thực là không phổ biến và có thể không được hỗ trợ tùy thuộc vào trình biên dịch.
* C. Cho phép lấy địa chỉ trường kiểu nhóm bit. Đây là một hạn chế quan trọng của trường bit. Vì các trường bit thường không chiếm một byte đầy đủ, việc lấy địa chỉ trực tiếp của chúng là không thể thực hiện được. Bạn chỉ có thể truy cập và thay đổi giá trị của chúng thông qua các toán tử bitwise hoặc các thành phần của struct/class.
* D. Xây dựng được các mảng kiểu nhóm bit. Không thể xây dựng trực tiếp mảng các trường bit. Các trường bit là thành phần của một struct/class, và bạn có thể tạo mảng của struct/class đó, nhưng không phải mảng của riêng các trường bit.
Do đó, đáp án A là đáp án đúng nhất.
* Stack (Ngăn xếp): Là một cấu trúc dữ liệu hoạt động theo nguyên tắc LIFO (Last In, First Out - Vào sau ra trước). Việc chèn và xóa đều thực hiện ở cùng một đầu (đỉnh) của stack.
* Queue (Hàng đợi): Là một cấu trúc dữ liệu hoạt động theo nguyên tắc FIFO (First In, First Out - Vào trước ra trước). Việc chèn (enqueue) thực hiện ở một đầu (cuối hàng đợi) và xóa (dequeue) thực hiện ở đầu kia (đầu hàng đợi).
* Cây nhị phân: Là một cấu trúc dữ liệu phân cấp, mỗi nút có tối đa hai nút con. Việc chèn và xóa phụ thuộc vào vị trí nút và các quy tắc cân bằng cây (nếu có).
Như vậy, theo định nghĩa, Queue là cấu trúc dữ liệu mà việc chèn thực hiện ở một đầu và việc xóa thực hiện ở đầu kia.
Trong C/C++, cả malloc()
, calloc()
và realloc()
đều được sử dụng để cấp phát bộ nhớ động. Tuy nhiên, malloc()
là hàm cơ bản nhất dùng để cấp phát một vùng nhớ có kích thước chỉ định (tính bằng byte) và không khởi tạo giá trị ban đầu cho vùng nhớ đó. Vì kiểu dữ liệu động do người dùng định nghĩa (struct
, union
) có kích thước cụ thể, malloc()
hoàn toàn phù hợp để cấp phát bộ nhớ cho chúng.
calloc()
cũng cấp phát bộ nhớ động, nhưng nó nhận hai tham số: số lượng phần tử và kích thước của mỗi phần tử. calloc()
sẽ cấp phát một vùng nhớ đủ lớn để chứa tất cả các phần tử và khởi tạo tất cả các byte trong vùng nhớ đó về 0. Mặc dù calloc()
cũng có thể dùng để cấp phát bộ nhớ cho struct
và union
, nhưng malloc()
là lựa chọn phổ biến hơn vì nó đơn giản và hiệu quả hơn khi không cần khởi tạo giá trị ban đầu.
realloc()
được dùng để thay đổi kích thước của một vùng nhớ đã được cấp phát trước đó. Nó không dùng để cấp phát bộ nhớ mới hoàn toàn.
Như vậy, malloc()
là hàm phù hợp nhất để cấp phát bộ nhớ động cho các kiểu dữ liệu do người dùng định nghĩa.
Trong danh sách liên kết đơn, con trỏ next
của phần tử cuối cùng trỏ đến NULL
. Tuy nhiên, câu hỏi đang hỏi về dấu hiệu cho biết danh sách *rỗng*. Một danh sách liên kết đơn được coi là rỗng khi không có phần tử nào trong danh sách, tức là con trỏ đầu danh sách (thường được gọi là p
trong các ví dụ) trỏ đến NULL
.
Vậy đáp án đúng là: (p == NULL)
Các đáp án khác:
(p->right == NULL)
: Không đúng, vì danh sách liên kết đơn không có thuộc tínhright
.(p->info == NULL)
: Không đúng, vì điều này chỉ có nghĩa là phần tử hiện tại không có thông tin (dữ liệu) mà không phải danh sách rỗng.(p->next == NULL)
: Không đúng, điều này có nghĩa làp
đang trỏ tới phần tử cuối cùng của danh sách, chứ không phải danh sách rỗng.
* Phương án A: `(p->right != NULL)` - Đây là điều kiện chính xác để kiểm tra xem node `p` có cây con bên phải hay không. Nếu `p->right` khác `NULL`, nghĩa là `p` có một node con bên phải.
* Phương án B: `(p->left != NULL)` - Điều kiện này kiểm tra xem `p` có cây con bên trái hay không, không liên quan đến cây con bên phải.
* Phương án C: `(p->right != NULL) && (p->right->right == NULL)` - Điều kiện này kiểm tra xem `p` có cây con bên phải và cây con bên phải của `p` không có cây con bên phải. Điều này không phải là dấu hiệu chung cho biết `p` có cây con bên phải, mà chỉ là một trường hợp cụ thể.
* Phương án D: `(p->right != NULL) && (p->right->right != NULL)` - Điều kiện này kiểm tra xem `p` có cây con bên phải và cây con bên phải của `p` có cây con bên phải. Điều này cũng không phải là dấu hiệu chung cho biết `p` có cây con bên phải, mà chỉ là một trường hợp cụ thể.
Vậy, phương án A là đáp án đúng nhất.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.