JavaScript is required

Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau:

struct S1 {

int info;

struct S1 * next;

} *head;

Biết con trỏ “head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Cho biết mục đích của câu lệnh sau:

c

Sao chépChỉnh sửa

head->next->next->info = 111;

A.

Câu lệnh bị lỗi.

B.

Giá trị “info” trong phần tử thứ 3 đã bị thay đổi.

C.

Giá trị “info” trong phần tử thứ 2 đã bị thay đổi.

D.
Giá trị “info” trong phần tử bất kỳ đã bị thay đổi.
Trả lời:

Đáp án đúng: B


Câu hỏi này kiểm tra kiến thức về con trỏ và cách truy cập các phần tử trong danh sách liên kết đơn. `head` là con trỏ trỏ đến phần tử đầu tiên của danh sách. `head->next` sẽ trả về con trỏ trỏ đến phần tử thứ hai của danh sách. `head->next->next` sẽ trả về con trỏ trỏ đến phần tử thứ ba của danh sách. `head->next->next->info` sẽ truy cập vào trường `info` của phần tử thứ ba trong danh sách. Do đó, câu lệnh `head->next->next->info = 111;` sẽ gán giá trị 111 cho trường `info` của phần tử thứ ba trong danh sách. Vậy đáp án B đúng. Các phương án khác: - A sai vì câu lệnh sẽ không bị lỗi nếu danh sách có ít nhất 3 phần tử. Nếu danh sách ít hơn 3 phần tử, chương trình sẽ bị lỗi khi truy cập vào một vùng nhớ không hợp lệ (nullptr). - C sai vì câu lệnh thay đổi giá trị của phần tử thứ 3, không phải thứ 2. - D sai vì câu lệnh chỉ thay đổi giá trị của phần tử thứ 3, không phải một phần tử bất kỳ.

Câu hỏi liên quan