使用链表创建堆栈

时间:2016-05-31 01:14:08

标签: c arrays list stack

我尝试使用我已创建的链接列出的函数创建堆栈。我有以下内容:

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();

2 个答案:

答案 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;
}