我需要實現一個名爲copyList的輔助函數,它有一個參數,一個指向ListNode的指針。這個函數需要返回一個指向原始鏈表副本的第一個節點的指針。換句話說,我需要在C++中編寫一個函數,該函數採用鏈表的頭節點並複製整個鏈表,並將指針返回給新的頭節點。我需要幫助實現這個功能,這就是我現在所擁有的。編寫一個函數來複制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;
}
而且,這是Listnode結構我一起工作:
struct Listnode {
Student *student;
Listnode *next;
};
注:我正在與此功能的另一因素是一個指針返回到局部變量的想法。
+1爲一個很好提出的問題!第一個反問題:你可以通過分配單個節點來複制整個列表嗎?第二,第三,...和第n節點內容的副本將存儲在哪裏? – 2012-04-10 03:03:33
謝謝,我不知道我是否完全回答你的問題,但我會盡我所能: - 我應該創建一個全新的列表副本。因此,我無法複製標題節點,因爲我的複製列表將包含相同的引用。我只是想複製這些值。 - 另外,複製列表中的第一個listnode應該與原始列表中的第一個listnode具有相同的值。但是複製的列表不應該引用/指向原始列表中的任何節點。 – 2012-04-10 03:09:38
新列表不應該指向任何舊節點的NODES,但是新節點是否應該指向舊CONTENTS?這種情況下的「內容」是「學生」對象。基本上,你是否也在模仿學生?這個問題並不清楚。所以這兩個列表可以指向同一個學生,但可以是不同的列表,或者每個列表也可以「擁有」他們自己的學生副本。 – 2012-04-10 03:37:34