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

4 phương ánCó giải thích
Đề bài
Node f = p.prev; // prev is a link to predecessor node
Node q = new Node(x);
q.prev = f; q.next = p;
f.next = q; p.prev = q;

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 inserts new node with value x before the node p.". Đoạn mã lấy f = p.prev, nghĩa là nút đứng ngay trước p, việc chỉ danh sách liên kết đôi làm được trong một bước. Sau đó nút mới q mang giá trị x được nối hai chiều vào khoảng giữa f và p: q.prev = f cùng q.next = p cho q biết hai láng giềng, f.next = q cùng p.prev = q cho f và p biết q. Không liên kết nào của p.next bị đổi và không nút nào bị tách ra, nên hiệu quả đúng là chèn x vào trước p với chi phí O(1). "It inserts new node with value x after the node p." phải lấy mốc là p.next chứ không phải p.prev. "It replaces the node p with new node with value x." sai vì p vẫn nằm trong chuỗi, chỉ có liên kết lùi của nó chuyển sang q. "It creates new node with value x at the end of the list." sai vì vị trí chèn do p quyết định; nó chỉ trùng cuối danh sách trong trường hợp riêng p là nút cuối, mà ngay cả khi ấy x vẫn đứng trước p.

Cùng phần 1

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