Suppose a doubly linked list of integers is given below and p is a reference to the node with value 12 in the list (i.e. p.info=12): (head) 7 11 6 4 33 12 8 3 (tail) What does the list look like after the following java code snippet is run?

5 phương ánCó giải thích
Đề bài
int x = 5;
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: "7 11 6 4 33 5 12 8 3". Đoạn mã lấy f bằng p.prev, tức nút 33 đứng ngay trước nút 12, rồi đặt bốn liên kết q.prev bằng f, q.next bằng p, f.next bằng q và p.prev bằng q; bốn phép gán này khâu nút mới mang giá trị 5 vào đúng khe giữa 33 và 12, nên 5 hiện ra ngay trước 12 và không nút nào bị mất. Vì vậy "7 11 6 4 33 12 8 3 5" sai vì muốn nối vào cuối thì phải sửa tail.next và tail, mà đoạn mã không chạm tới tail; "7 11 6 4 33 12 5 8 3" sai vì nó đặt 5 sau 12, tức lấy mốc là p.next chứ không phải p.prev; "7 5 11 6 4 33 12 8 3" sai vì nó chèn sau head, nghĩa là f phải là head chứ không phải nút trước p; "5 7 11 6 4 33 12 8 3" sai vì chèn vào đầu còn cần gán lại head bằng q, điều đoạn mã không làm.

Cùng phần 1

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