Suppose we are considering a doubly linked list and p is some node in the list which has both predecessor and successor nodes. Select the most correct java code snippet that deletes the node p.

4 phương ánCó giải thích

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: "Node p1,p2; p1 = p.prev; // prev is a link to previous node p2=p.next; p2.prev = p1; p1.next = p2;". Xoá một nút giữa danh sách liên kết đôi phải vá cả hai chiều: p1 giữ nút trước, p2 giữ nút sau, rồi p2.prev trỏ về p1 và p1.next trỏ tới p2, nhờ vậy không còn liên kết nào dẫn tới p theo cả hai hướng. "Node p1,p2; p1 = p.prev; p2=p1.next; p2.prev = p1; p1.next = p2;" sai vì p2 được lấy từ p1.next nên p2 chính là p; hai lệnh sau chỉ ghi lại đúng các liên kết cũ và danh sách không đổi. "Node p1,p2; p1 = p.prev p2=p.next; p2.prev = p1; p1.next = p;" sai vì liên kết tiến vẫn trỏ tới p, nên đi từ head vẫn gặp p và nút này chưa bị xoá. "Node p1,p2; p1 = p.prev p2=p.next; p2.prev = p; p1.next = p2;" sai đối xứng: chiều tiến đã vượt qua p nhưng chiều lùi của nút sau vẫn trỏ về p, danh sách hỏng tính nhất quán hai chiều.

Cùng phần 1

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