Suppose a singly linked list of integers is given below: (head) 7 1 6 4 3 12 8 2 (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 = 9;
Node f = head;
while(f.next != tail) f = f.next;
Node q = new Node(x);
q.next = tail;
f.next = 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 1 6 4 3 12 8 9 2". Vòng lặp chạy tới khi f.next bằng tail nên f dừng ở nút 8, tức nút liền trước phần tử cuối. Nút mới mang 9 được nối next vào tail rồi f.next trỏ sang nó, vậy 9 nằm giữa 8 với nút cuối là 2, mọi liên kết phía trước không đổi. Dãy "7 1 6 4 3 12 8 2 9" đặt 9 sau 2, muốn vậy phải đi tới khi f chính là tail rồi gán next của tail, khác với điều kiện dừng f.next bằng tail. Dãy "7 1 6 4 3 12 9 8 2" đặt 9 trước 8, nghĩa là f phải dừng sớm hơn một nút, tại 12. Dãy "7 9 1 6 4 3 12 8 2" chèn 9 vào sau nút đầu, chỉ xảy ra nếu gán next của head mà không đi dọc danh sách. Dãy "9 7 1 6 4 3 12 8 2" đặt 9 lên đầu, đó là phép chèn ở head kèm việc dời biến head, không liên quan tới f.

Cùng phần 1

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