我尝试使用我已创建的链接列出的函数创建堆栈。我有以下内容:
listNode *createList()
{
listNode *anyNode;
anyNode = malloc(sizeof(listNode));
anyNode->next = NULL;
return anyNode;
}
stack *createStack()
{
stack *temp;
stack.list = createList();
return temp;
}
在我的主要内容中我使用:
int main(void)
{
stack *theStack;
theStack = createStack();
return(0);
}
我将我的堆栈定义为:
typedef struct stack {
listNode *list;
}stack;
我收到编译错误:期望的标识符或'('在我的createStack函数中调用我的stack.list = createList()。我不确定原因。
如果我改变
,我的主要作品stack *theStack
到
listNode *list
然后将其称为:list = createList();
答案 0 :(得分:1)
您被声明为temp
作为stack
类型的指针,但随后您编写了
stack.list = ...
您的代码中的 stack
类型不是变量,您不能这样使用它。
你需要一个变量,比如
stack my_stack;
my_stack.list = ...
如果你想让它成为指针,那么你需要使用malloc()
为它分配空间。
答案 1 :(得分:0)
问题出在createstack
函数中。
stack.list = createList()
stack
是一个全局变量,您应该在这里使用局部变量temp
。您还需要在此处为堆栈结构分配大小。
stack *createStack()
{
stack *temp;
temp = malloc(sizeof(stack));
temp->list = createList();
return temp;
}