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. 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 thêm một phần tử vào đầu danh sách:
struct S1 {
int info;
struct S1 * next;
}* head;
tử đầu tiên trong danh sách. Nhóm câu lệnh nào sau đây thêm một phần tử vào đầu danh sách:
struct S1 {
int info;
struct S1 * next;
}* head;
Trả lời: 
Đáp án đúng: A
Để thêm một phần tử mới vào đầu danh sách liên kết đơn, chúng ta cần thực hiện các bước sau:
1.  **Tạo một nút mới:** Giả sử nút mới được tạo và địa chỉ của nó được lưu trong con trỏ `p`.
2.  **Liên kết nút mới vào danh sách hiện tại:**  `p->next = head;` (Gán con trỏ `next` của nút mới `p` trỏ đến phần tử đầu tiên hiện tại của danh sách, tức là `head`).
3.  **Cập nhật `head`:** `head = p;` (Gán `head` trỏ đến nút mới `p`, làm cho nút mới trở thành phần tử đầu tiên của danh sách).
Vậy, phương án A (`p->next=head; head=p;`) là đúng.
Các phương án khác sai vì:
*   **Phương án B:** `head->p` không hợp lệ vì `head` là con trỏ đến một cấu trúc, không có trường `p`. Ngoài ra, gán `head = p->next;` sẽ làm mất nút mới vừa thêm.
*   **Phương án C:** `head->next=p;` sẽ thêm nút mới vào *sau* `head`, không phải vào đầu danh sách. `p=head;` sẽ làm mất địa chỉ của nút mới.
*   **Phương án D:** Vì phương án A đúng nên phương án này sai.
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

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
