Select the statement that is most correct. Suppose we are considering a singly linked list and p is some node in the list which has both predecessor and successor nodes. What does the java code snippet below do?

4 phương ánCó giải thích
Đề bài
Node f = head;
while(f.next != p) f = f.next;
f.next = p.next;

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "It deletes the node p.". Danh sách liên kết đơn không lùi được, nên vòng lặp while(f.next != p) f = f.next chạy từ head để dừng đúng ở nút đứng liền trước p. Lệnh f.next = p.next khiến nút đó trỏ vượt qua p sang nút kế tiếp, vậy p không còn ai trỏ tới và biến mất khỏi đường đi từ head, đúng nghĩa xoá p. "It deletes the node before p." sai vì nút trước p chính là f, nó vẫn nằm trong danh sách và còn là nút giữ liên kết mới. "It deletes the node after p." sai vì nút sau p vẫn được f.next trỏ tới nên vẫn truy cập được từ head; muốn xoá nó phải viết p.next = p.next.next. "It does not make any change on the list." sai vì liên kết f.next đã bị ghi lại, danh sách ngắn đi một nút.

Cùng phần 1

Xuất hiện trong 1 bộ đề