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 *指向的 by tailref,取消引用->以获取指向的元素struct node *next然后将其设置为指向的元素listRef

于 2013-02-08T06:13:23.410 回答