Consider the fun() method in a singly linked list of integers below:

4 phương ánCó giải thích
Đề bài
Integer fun()
  {if (isEmpty())  return(null);
    Integer x = tail.info;
    if (head == tail)
      head = tail = null;
       else
      {Node p1,p; p1=null;p=head;
        while(p!=tail) {p1=p;p=p.next;}
        p1.next=null; tail=p1;
       }
    return(x);
  }

Specify the correct statement about the fun() method in the code above (choose the most suitable one).

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 removes and returns a node at the end of the list". Đọc theo đúng thụt lề: hàm lưu x bằng tail.info trước, nếu danh sách chỉ có một nút thì head và tail cùng về null, ngược lại cho p chạy từ head còn p1 luôn giữ nút liền trước p, vòng while với điều kiện p khác tail dừng đúng lúc p chạm tail nên p1 là nút áp cuối; hai lệnh p1.next bằng null và tail bằng p1 cắt hẳn nút cuối ra khỏi danh sách, rồi hàm trả về giá trị đã lưu. Vì vậy "It returns a node at the end of the list." sai vì nó bỏ mất phần quan trọng là danh sách bị ngắn đi một nút; "It removes and returns a node at the beginning of the list" sai vì head chỉ bị gán lại trong trường hợp danh sách một nút, các trường hợp khác head không hề thay đổi; "It removes and returns a node at the middle of the list" sai vì điều kiện dừng của vòng lặp gắn chặt vào tail nên không bao giờ dừng ở nút giữa.

Cùng phần 1

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