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: {(head->next)=(head->next)->next;};

A.

Loại bỏ phần tử thứ nhất ra khỏi danh sách.

B.

Loại bỏ phần tử thứ 2 ra khỏi danh sách.

C.

Loại bỏ phần tử thứ 3 ra khỏi danh sách.

D.

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

Trả lời:

Đáp án đúng: B


Câu lệnh `(head->next)=(head->next)->next;` thực hiện việc loại bỏ phần tử thứ hai khỏi danh sách móc nối đơn. Để hiểu rõ hơn, ta phân tích từng bước: 1. `head` là con trỏ trỏ đến phần tử đầu tiên của danh sách. 2. `head->next` là con trỏ trỏ đến phần tử thứ hai của danh sách. 3. `(head->next)->next` là con trỏ trỏ đến phần tử thứ ba của danh sách. 4. Câu lệnh gán `(head->next)=(head->next)->next;` có nghĩa là thay đổi con trỏ `next` của phần tử đầu tiên (tức là `head->next`) để nó trỏ đến phần tử thứ ba. Như vậy, phần tử thứ hai sẽ bị "bỏ qua" và không còn được liên kết trong danh sách nữa, dẫn đến việc nó bị loại bỏ. Vậy, đáp án đúng là B.

Câu hỏi liên quan