Tôi cần triển khai hàm auxilliary, có tên là copyList, có một tham số, một con trỏ đến một ListNode. Hàm này cần trả về một con trỏ tới nút đầu tiên của một bản sao của danh sách liên kết gốc. Vì vậy, nói cách khác, tôi cần mã hóa một hàm trong C++ mà lấy một nút tiêu đề của một danh sách liên kết và các bản sao toàn bộ danh sách liên kết, trả về một con trỏ tới nút tiêu đề mới. Tôi cần trợ giúp triển khai chức năng này và đây là những gì tôi có ngay bây giờ.Mã hóa một hàm để sao chép danh sách liên kết trong C++
Listnode *SortedList::copyList(Listnode *L) {
Listnode *current = L; //holds the current node
Listnode *copy = new Listnode;
copy->next = NULL;
//traverses the list
while (current != NULL) {
*(copy->student) = *(current->student);
*(copy->next) = *(current->next);
copy = copy->next;
current = current->next;
}
return copy;
}
Ngoài ra, đây là cấu trúc Listnode tôi đang làm việc với:
struct Listnode {
Student *student;
Listnode *next;
};
Lưu ý: một yếu tố tôi chạy vào với chức năng này là ý tưởng trở về một con trỏ đến một biến địa phương.
+1 cho câu hỏi được trình bày độc đáo! Câu hỏi phản hồi đầu tiên: bạn có thể sao chép toàn bộ danh sách bằng cách chỉ định một nút duy nhất không? Bản sao của nội dung nút thứ 2, thứ 3, ... và thứ n được lưu trữ ở đâu? –
Cảm ơn, tôi không chắc chắn nếu tôi trả lời đầy đủ các câu hỏi của bạn nhưng tôi sẽ cố gắng hết sức: -Tôi phải tạo một bản sao hoàn toàn mới của danh sách. Do đó, tôi không thể sao chép nút tiêu đề vì danh sách được sao chép của tôi sẽ chứa cùng một tham chiếu. Tôi chỉ muốn sao chép các giá trị. - Ngoài ra, danh sách đầu tiên trong danh sách sao chép phải có cùng giá trị với danh sách đầu tiên trong danh sách gốc. NHƯNG danh sách sao chép không nên tham chiếu/trỏ tới bất kỳ nút nào trong danh sách gốc. –
Danh sách mới không nên trỏ đến bất kỳ NODES nào trong số cũ, nhưng các nút mới có trỏ đến CONTENTS cũ không? "Nội dung" trong trường hợp này là đối tượng "Sinh viên". Về cơ bản, bạn có đang sao chép các sinh viên không? Điều đó không rõ ràng trong câu hỏi. Vì vậy, hai danh sách có thể trỏ đến cùng một sinh viên, nhưng là danh sách khác nhau, hoặc mỗi danh sách có thể "sở hữu" bản sao của riêng họ của sinh viên là tốt. –