0
我使用幾乎所有的遞歸函數創建一個鏈表,並且我迷上了複製構造函數。鏈表有一個頭部和一個尾部虛擬節點。我有:遞歸複製鏈接列表
/* Recursively duplicates the list. */
void duplicateNodes(const SortedList& o, Node * const copyIter) {
if (copyIter != head) {
duplicateNodes(o, copyIter->previous);
}
tail = tail->next = createNode(tail, copyIter->data, nullptr);
size = o.size;
}
我的拷貝構造函數:
SortedList(const SortedList& o) {
duplicateNodes(o, o.tail);
}
提前感謝!我還沒完全理解遞歸。
如果'head'和'tail'是'SortedList'的私有成員,我建議使用'_tail'或'm_tail'等前綴表示法。 – Dagrooms
或者總是用this-> tail來表示它。另外我討厭人們在同一條線上使用兩個作業,閱讀和跟隨是很可怕的。 –
順便說一句,在我看來,你在這裏得到的是一個無止境的循環,只是自己反覆調用自己。你的第一個if語句可能是真的,你的遞歸將繼續調用duplicateNodes –