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

Cùng phần 1

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