2

私の宿題タグに注意してください。すべての宿題と同様に、実際のコーディングに対する直接的な回答よりも有益な提案を歓迎します。ただし、私の概念的な質問には率直に答えてください。

こんにちは、

私の教授は、宿題のために二重にリンクされたリストを私たちに割り当てました。私は絶対に必要になるまで助けを求めることを避けていました。

彼は私たちにヘッダー ファイルを提供してくれます。そのためのクラスを作成する必要があり、ヘッダー ファイルに完全に従わなければなりません。彼がコピー コンストラクターを実行する方法は、コピー コンストラクターを呼び出すだけのヘルパー関数を作成させることです。

通常のケースではこれを簡単に行うことができますが、今回はヘルパー関数に対して非常に奇妙な署名を与えてくれました。

// copys chain at oldHead to newHead.
static void copy(Elem *&newHead, const Elem *oldHead)

これは、Elems と呼ばれる一連の構造体をコピーするためのものです。

struct Elem 
{
    Information info;
    Elem *next;
    Elem *back;
};

私は、Elem *& ビジネス全体についてほとんど混乱していると思います。

ありがとう、すべての助けは本当に感謝しています! うまくいけば、これは将来私の立場にある他の人々を助けるでしょう:)

4

1 に答える 1

2
static Elem* copy(const Elem *oldHead)

潜在的な機能だった可能性があります。古いヘッドを取得し、新しいクローンのヘッドを返します。

彼が選んだのは、ポインターを参照渡しすることです。

単純だったら

static void copy(Elem * newHead, const Elem *oldHead)
{
    newHead = new Elem();
}

上記のようなもの。newHead への変更は、関数の外部からは見えません。

以下同じです。x は値渡しです。x への変更は、関数Addtenが戻ると忘れられます。あなたの x はたまたまポインタです。

   void Addten( int x )
    {
       x = x + 10;
    }

    int x = 10;
    Addten( x );
于 2011-11-14T03:18:10.893 に答える