4

循環リストを作成する機能があります。コンパイルに問題があります。構文かどうかわかりません。誰か助けていただければ幸いです。

    void CreateCircularList(struct node** listRef, struct node** tailRef)

    {    
    Push(&*listRef, "String 1");
    *tailRef=*listRef;
    Push(&*listRef, "String 2");
    Push(&*listRef, "String 3");
    Push(&*listRef, "String 4");

    *(tailRef->next)=*listRef;

    } 

コンパイラは最後の行でエラーにフラグを立てます:

「メンバー参照の基本型 'struct node*' は構造体または共用体ではありません」

理由はありますか?ありがとう

4

2 に答える 2

7

あなたはおそらくしたいです

  (*tailRef)->next = *listRef;

最後の任務として。

はポインタへのポインタであるため、tailRef->next書き込むことはできません。tailRef

また、読みやすさの理由からPush(listRef, "Some string");、あなたの代わりにコーディングすることをお勧めし ます。Push(&*listRef, "Some string");

于 2013-02-08T06:10:24.520 に答える
2

以下のようにすればいいと思います

(*tailRef)->next = *listRef;

つまり、 がstruct node *指す を取得しtailref、 を参照解除し->て を取得し、struct node *それを がnext指す要素に設定します。listRef

于 2013-02-08T06:13:23.410 に答える