You are given a singly linked list with at least 3 elements and p is a reference to a middle node (p is not the head nor the tail node). Select the statement about deleting the node p from the list that is most correct.

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: "We can delete the node p by moving the data from the next node into the p node and then deleting the next node by statement p.next = p.next.next; This solution has O(1) runtime.". Trong danh sách liên kết đơn ta không lùi được, nhưng không nhất thiết phải giải phóng đúng ô nhớ của p: chép dữ liệu của nút kế tiếp vào p rồi tháo nút kế tiếp ra bằng p.next = p.next.next là đã cho đúng dãy giá trị cần có, và vì p không phải tail nên p.next luôn tồn tại; toàn bộ gói trong vài phép gán nên là O(1). Phương án "We can find the node f before the node p and then deleting the node p by statement f.next = p.next; This solution has O(1) runtime." sửa liên kết đúng nhưng ước lượng sai chi phí: tìm f phải đi từ head nên mất O(n). Phương án "Deleting the node p always takes O(n) time." bị chữ always phá bởi đúng mẹo chép dữ liệu nói trên. Phương án "Deleting the node p always takes O(1) time." sai theo chiều ngược lại: nếu p là nút cuối thì không có nút kế tiếp để chép, buộc phải đi tìm nút trước nó, nên không phải lúc nào cũng O(1).

Cùng phần 1

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