Đâu là phát biểu đúng về danh sách móc nối?
Đáp án đúng: C
Câu hỏi liên quan
Đề bài yêu cầu thêm một phần tử vào **đầu** danh sách liên kết đơn.
Để thêm một phần tử vào đầu danh sách, ta cần thực hiện các bước sau:
- Tạo một node mới (trong đoạn code, node mới được trỏ bởi con trỏ
p
). - Cho con trỏ
next
của node mới (p->next
) trỏ đến node đầu tiên hiện tại của danh sách (địa chỉ được lưu tronghead
). - Cập nhật
head
để nó trỏ đến node mới (p
), biến node mới thành node đầu tiên của danh sách.
Phân tích các đáp án:
- Đáp án A:
p->next = head; head = p;
- Câu lệnh
p->next = head;
gán địa chỉ của phần tử đầu tiên hiện tại (được trỏ bởihead
) vào trườngnext
của phần tử mới (được trỏ bởip
). Điều này đảm bảo phần tử mới sẽ liên kết đến phần còn lại của danh sách. - Câu lệnh
head = p;
gán địa chỉ của phần tử mới (p
) chohead
. Điều này làm cho phần tử mới trở thành phần tử đầu tiên của danh sách.
=> Đáp án A đúng.
- Câu lệnh
- Đáp án B:
p->next = head; head->p; head = p->next;
p->next = head;
gán địa chỉ của phần tử đầu tiên hiện tại cho trường next của node mới.head->p;
Câu lệnh này không hợp lệ về mặt cú pháp vì không có trường 'p' trong struct S1, và hơn nữa cũng không thực hiện chức năng gì có ý nghĩa trong việc thêm phần tử vào danh sách.head = p->next;
gán địa chỉ mà p trỏ tới (chính là địa chỉ của phần tử đầu tiên trước đó) cho head. Như vậy head vẫn trỏ vào phần tử đầu tiên ban đầu, và phần tử mới không được thêm vào đầu danh sách.
=> Đáp án B sai.
- Đáp án C:
head->next = p; p = head;
- Câu lệnh
head->next = p;
gán địa chỉ của phần tử mới (p
) vào trườngnext
của phần tử đầu tiên hiện tại (được trỏ bởihead
). Điều này thêm phần tử mới vào *sau* phần tử đầu tiên, chứ không phải vào đầu danh sách. - Câu lệnh
p = head;
gán địa chỉ của phần tử đầu tiên (head
) chop
, làm chop
trỏ đến phần tử đầu tiên ban đầu. Điều này không thay đổi cấu trúc danh sách.
=> Đáp án C sai.
- Câu lệnh
- Đáp án D: Không có câu nào đúng.
Vì đáp án A đúng, nên đáp án D sai.
Đề bài cho một danh sách liên kết đơn, với head
là con trỏ trỏ đến phần tử đầu tiên. Để xóa phần tử đầu tiên, ta cần cập nhật head
để nó trỏ đến phần tử thứ hai. Điều này có thể thực hiện bằng cách gán head
bằng head->next
.
- Phương án A:
head->next = head;
Gán con trỏnext
của phần tử đầu tiên trỏ lại chính nó, không xóa phần tử đầu tiên khỏi danh sách. - Phương án B:
head = head->next;
Gánhead
bằng địa chỉ của phần tử thứ hai, do đó phần tử đầu tiên bị loại khỏi danh sách (không còn con trỏ nào trỏ đến nó). Đây là phương án đúng. - Phương án C:
head = head->next->next;
Gánhead
bằng địa chỉ của phần tử thứ ba (nếu có), làm mất phần tử đầu và phần tử thứ hai khỏi danh sách. - Phương án D: Loại vì chỉ ra 2 và 3, nhưng chỉ 2 đúng.
Vậy đáp án đúng là B.
Trong ngôn ngữ lập trình C/C++, struct là một kiểu dữ liệu do người dùng định nghĩa, cho phép nhóm các biến có kiểu dữ liệu khác nhau vào một đơn vị duy nhất. Các phần tử của struct có thể được truy cập thông qua toán tử chấm (.).
- A. Có thể truyền tham số là một biến struct cho hàm. - Đúng. Trong C/C++, bạn hoàn toàn có thể truyền một biến struct vào một hàm. Khi đó, toàn bộ nội dung của struct sẽ được sao chép vào hàm (nếu truyền theo giá trị) hoặc hàm sẽ nhận một con trỏ tới struct (nếu truyền theo tham chiếu).
- B. Có thể truyền tham số là một biến con trỏ cho hàm. - Đúng. Việc truyền một biến con trỏ vào hàm là một kỹ thuật phổ biến, cho phép hàm có thể thay đổi giá trị của biến mà con trỏ trỏ tới.
- C. Có thể truyền tham số là một biến con trỏ struct cho hàm. - Đúng. Tương tự như việc truyền con trỏ thông thường, bạn có thể truyền một con trỏ struct vào hàm. Điều này cho phép hàm truy cập và thay đổi các thành viên của struct mà con trỏ trỏ tới.
- D. Không thể truyền tham số là phần tử của struct cho hàm. - Sai. Các phần tử (thành viên) của struct có thể là bất kỳ kiểu dữ liệu nào, bao gồm cả kiểu dữ liệu cơ bản (int, float, char,...) và kiểu dữ liệu phức tạp (mảng, con trỏ,...). Do đó, bạn hoàn toàn có thể truyền một thành viên của struct vào hàm, giống như truyền một biến thông thường.
Vậy, phát biểu sai là D.
Trong danh sách liên kết đơn, node cuối cùng là node mà con trỏ next
của nó trỏ đến NULL
. Điều này có nghĩa là không có node nào theo sau nó trong danh sách.
- A. (p->info != NULL);: Điều kiện này kiểm tra xem trường
info
của nodep
có khácNULL
hay không. Trườnginfo
chứa dữ liệu của node, và việc nó khácNULL
không liên quan đến việcp
có phải là node cuối cùng hay không. - B. (p->info == NULL);: Điều kiện này kiểm tra xem trường
info
của nodep
có bằngNULL
hay không. Tương tự như trên, điều này không liên quan đến việcp
có phải là node cuối cùng hay không. - C. (p->next != NULL);: Điều kiện này kiểm tra xem con trỏ
next
của nodep
có khácNULL
hay không. Nếup->next != NULL
, điều đó có nghĩa làp
không phải là node cuối cùng, vì nó còn trỏ đến một node khác. - D. (p->next == NULL);: Điều kiện này kiểm tra xem con trỏ
next
của nodep
có bằngNULL
hay không. Nếup->next == NULL
, điều đó có nghĩa làp
là node cuối cùng, vì nó không trỏ đến node nào khác.
Vậy, đáp án đúng là D.
Hàng đợi (queue) là một cấu trúc dữ liệu hoạt động theo nguyên tắc FIFO (First-In, First-Out), nghĩa là phần tử nào được thêm vào hàng đợi trước thì sẽ được lấy ra trước. Trong các lựa chọn:
- A. FIFO: Đây là cơ chế hoạt động chính xác của hàng đợi.
- B. Round Robin: Round Robin là một thuật toán lập lịch, thường được sử dụng trong hệ điều hành để phân chia thời gian CPU cho các tiến trình, không phải là cơ chế hoạt động của hàng đợi.
- C. Tuần tự: Mô tả một thứ tự nhưng không đặc trưng cho hàng đợi. Các cấu trúc dữ liệu khác cũng có thể tuần tự nhưng không phải là hàng đợi.
- D. FILO: Đây là cơ chế hoạt động của ngăn xếp (stack), không phải là hàng đợi.
Vì vậy, đáp án đúng là FIFO.

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.