我有一个创建循环列表的功能,我正在编译问题,不确定它是否是语法,如果有人可以提供帮助,请表示赞赏。
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;
}
编译器在最后一行标记错误:
“成员引用基类型'结构节点*'不是结构或 联盟“
任何想法为什么?感谢
答案 0 :(得分:7)
你可能想要
(*tailRef)->next = *listRef;
作为最后一项任务。
由于tailRef->next
是指向指针的指针,因此无法编写tailRef
。
出于可读性原因,我还建议您只编码Push(listRef, "Some string");
而不是Push(&*listRef, "Some string");
。
答案 1 :(得分:2)
我认为您需要按照以下方式执行此操作
(*tailRef)->next = *listRef;
即获取struct node *
所指向的tailref
,使用->
取消引用以获取struct node *
next
,然后将其设置为指向的元素到listRef