Đây là bài tập về nhàTạo một constructor sao chép cho một danh sách liên kết
Tôi đang làm việc về việc thực hiện một lớp danh sách liên kết cho ++ lớp C của tôi, và các nhà xây dựng bản sao đó có thể rất khó hiểu đối với tôi.
Danh sách liên kết bao gồm các cấu trúc được gọi là Elems:
struct Elem
{
int pri;
data info;
Elem * next;
};
Elem * head;
thông tin là một lớp tùy chỉnh riêng biệt mà được lưu trữ trong Elem.
chữ ký cho các nhà xây dựng bản sao là:
linkedList::linkedList(const linkedList &v)
Vấn đề tôi đang gặp chủ yếu dùng logic của tôi và thực sự viết nó dưới dạng mã.
ý tưởng chung của tôi là để:
- Set đầu đến v.head (head = v.head)
- Đặt giá trị của Elem đến (v.pri pri = v, info = v.info , bên cạnh = v.next)
- Duyệt qua, lặp lại bước 2.
đây có phải là ý tưởng chung?
Mọi trợ giúp đều tuyệt vời. Hãy nhớ, đây là bài tập về nhà, vì vậy không có câu trả lời trực tiếp nào!
Cảm ơn bạn đã dành thời gian
=================================== ================================================== ================================================== =============================
Cảm ơn thời gian của bạn!
Tôi nghĩ rằng tôi có nó đã tìm ra:
//Copy Constructor
LinkedList::LinkedList(const LinkedList &v)
{
Elem * p1 = 0;//current
Elem * p2 = 0;//next
if(v.head == 0)
head = 0;
else
{
head = new Elem;
head -> pri = v.head -> pri;
head -> info = v.head -> info;
p1 = head;
p2 = v.head -> next;
}
while(p2)
{
p1 -> next = new Elem;
p1 = p1 -> next;
p1 -> pri = p2 -> pri;
p1 -> info = p2 -> info;
p2 = p2 -> next;
}
p1 -> next = 0;
}
Tôi khá chắc chắn rằng công trình. Tôi đã vẽ một số hình ảnh hợp lý để trợ giúp và tôi không gặp phải bất kỳ vấn đề nào.
Chính xác thì người tạo bản sao phải làm gì? Sản xuất một bản sao của mỗi nút với các liên kết thích hợp có vẻ hợp lý, nhưng đó không phải là khả năng duy nhất. –
+1 Để ghi rõ bài tập về nhà * và yêu cầu không có câu trả lời trực tiếp *. –
Cảm ơn bạn đã cho tôi gợi ý đúng!Tôi đã triển khai một hàm tạo bản sao sâu cho các nút của mình, để có thể trả về một đối tượng của nút "cuối cùng" với cấu trúc tham chiếu cho nút cha và nút cha của nó ... để giữ nguyên. Sử dụng nó cho thuật toán tìm kiếm cây – mtosch