我一直在困難的時間包圍指針和鏈表。我可以看到這些類型的問題在這裏經常被問到,所以我很抱歉加入到這個論壇的泥潭中。然而,我一直試圖將這項任務包裝兩天,而我似乎無法得到它。鏈接列表值的C++複製構造函數,而不是地址
我應該指出這是一項家庭作業!
我有一個項目,其中我必須複製鏈表,銷燬舊列表並保留值。我幾乎必須通過引用將整個列表傳遞給拷貝構造函數,而不僅僅是一個節點。
我已經看到了一些真正偉大的反應已經在這裏做了一些挖後,和最近我看到一個解決方案,我需要實現的是這一個:
Coding a function to copy a linked-list in C++
當我嘗試實現類似的代碼,以我的,它給我這個錯誤在編譯:錯誤:一元的無效類型參數「*」(有「詮釋」)鏈表
下面的代碼:
IntList::IntList(const IntList &a){
if(a.head != NULL)
{
ListNode *thisNode = a.head;
ListNode *nextN = NULL;
while(thisNode != NULL)
{
ListNode *newNode = new ListNode;
newNode->value = (*thisNode->value); //error occurs here
if(nextN == NULL)
{
nextN = newNode;
}
else
{
nextN->next = newNode;
nextN = nextN->next;
}
thisNode = thisNode->next;
size++;
}
}
else
{
cout << "The list empty." << endl;
return;
}
}
如果我刪除第10行的封裝,構造函數不會發出錯誤。但是,一旦我調用析構函數,舊列表仍然引用剛被清空的內存。
我真的很感謝在這個任務上的任何幫助。我認爲我並沒有正確引用指針,但似乎無法破解代碼並使其正常工作...
歡迎來到StackOverflow。 請參考[遊覽], 學習問好問題stackoverflow.com/help/how-to-ask, 做個[mcve]。 如果您正在尋找調試代碼的幫助,請參閱https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch
您應該使用newNode-> value = thisNode-> value – Kapil