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) = (head->next)->next;
Trả lời:
Đáp án đúng: B
Câu lệnh `(head->next) = (head->next)->next;` có nghĩa là gán con trỏ `next` của phần tử thứ nhất (mà `head` đang trỏ tới) bằng con trỏ `next` của phần tử thứ hai. Điều này dẫn đến việc bỏ qua phần tử thứ hai trong danh sách, hay nói cách khác là loại bỏ phần tử thứ hai ra khỏi danh sách.
* **head**: Con trỏ trỏ đến phần tử đầu tiên của danh sách.
* **head->next**: Con trỏ trỏ đến phần tử thứ hai của danh sách.
* **(head->next)->next**: Con trỏ trỏ đến phần tử thứ ba của danh sách.
Do đó, sau khi thực hiện câu lệnh, `head->next` sẽ trỏ đến phần tử thứ ba, và phần tử thứ hai sẽ bị loại khỏi danh sách liên kết.