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. Nhóm câu lệnh nào sau đây xóa phần tử đầu tiên ra khỏi danh sách?

A.

head->next = head;

B.

head = head->next;

C.

head = head->next->next;

D.
2, 3.
Trả lời:

Đáp án đúng: B


Đề 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án head 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án head 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.

Câu hỏi liên quan