Select the statement that is most correct. Suppose we are considering a singly linked list which has at least 2 nodes. What does the java code snippet below do?
Node f = head;
while(f.next != tail) f = f.next;
f.next = null;
tail = f;Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "It deletes the last node.". Vòng lặp while(f.next != tail) f = f.next; dừng lại đúng khi f là nút có liên kết trỏ tới tail, tức nút kế cuối; sau đó f.next = null cắt liên kết tới nút cuối và tail = f dời đuôi lùi về nút kế cuối. Nút cuối cũ không còn ai trỏ tới nên bị loại khỏi danh sách. Vì danh sách có ít nhất 2 nút nên head khác tail và f.next khác null ngay từ đầu, vòng lặp an toàn. Phương án "It deletes node before the last node." sai vì nút kế cuối chính là f và nó được giữ lại làm đuôi mới, không hề bị bỏ. Phương án "It deletes some middle node in the list." sai vì điều kiện dừng neo vào tail nên vòng lặp luôn chạm chính xác vị trí cuối, không phải một nút giữa bất kỳ. Phương án "It does not make any change on the list." sai vì hai lệnh gán cuối đổi thật: một liên kết next bị xoá và biến tail bị trỏ lại.