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 thay đổi con trỏ `next` của phần tử thứ nhất (mà `head` đang trỏ tới). Cụ thể, nó gán địa chỉ của phần tử thứ ba (là `(head->next)->next`) cho con trỏ `next` của phần tử thứ nhất. Điều này có nghĩa là phần tử thứ nhất sẽ trỏ trực tiếp đến phần tử thứ ba, bỏ qua phần tử thứ hai. Do đó, phần tử thứ hai bị loại bỏ khỏi danh sách. Ví dụ: Giả sử ban đầu danh sách có các phần tử A -> B -> C -> D. Trong đó: - `head` trỏ tới A. - `head->next` trỏ tới B. - `(head->next)->next` trỏ tới C. Sau khi thực hiện câu lệnh, `head->next` sẽ trỏ tới C. Kết quả là danh sách trở thành A -> C -> D, phần tử B đã bị loại bỏ.

Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan