2016-04-01 15 views
-3

ここで間違っていることを理解できません。二重リンクリストを再帰的に複製する方法C++

//リストを再帰的に複製します。

void duplicateNodes(const SortedList& o, Node * const copyIter) { 

     if (copyIter != NULL) { 
      o.add(o.head, copyIter->data); 
      duplicateNodes(o, copyIter->next); 
     } 
    } 
+3

何が間違っているかを教えてください。 – NathanOliver

+0

または 'SortedList'などは –

+1

です。' o'はconstなので、それはソースのようですが、あなたはそれをデスティネーションとして扱っているようですが、 'copyIter'をソースとして扱います。 – jxh

答えて

0

"add"メソッドは何をしますか?リストの終わりまたは終わりにノードを追加しますか?

また、2つのソート済みリストを作成しようとしているのでしょうか、リスト内のすべてのノードを単純に2倍にしようとしていますか?以下を参照してください:

オリジナルリスト:A-> B-> Cを

2リスト:A-> B-> C & A-> B-> C ダブルすべてのノード:A-> A-> B-> B-> C-> C

+0

指定されたインデックスに追加する予定です/ *再帰的にノードをリストに追加します。 */ virtual void add(Node * const after、const E&o){}また、元のリストの単なるコピーです。リスト内のすべてのノードを二重にしないでください。 – ms01249

0
第二パラメータにあなたの constを移動

void duplicateNodes(SortedList& o, Node const * const copyIter) 

それはconstすることはできませんので、あなたは、最初のパラメータを変更しています。

関連する問題