typedef struct student *std_ptr;
struct student
{
int number;
std_ptr next;
};
typedef std_ptr STACK;
create_stack(void)
{
STACK S;
S = (STACK) malloc( sizeof( struct student ) );
if(S == NULL) printf("out of space!");
return S;
}
void push(int x, STACK S)
{
std_ptr tmp;
tmp = (std_ptr) malloc(sizeof(struct student));
if(tmp == NULL) printf("out of space!");
else
{
tmp -> number = x;
tmp -> next = S -> next;
S -> next = tmp;
}
}
int main()
{
push(12058010,STACK S);
return 0;
}
我试图调用函数,我得到错误:堆栈前预期的表达式。我也尝试调用这个函数
int main()
{
push(12058010,S);
return 0;
}
这次我得到错误:'S'未声明(首次使用此功能)
感谢您的帮助!
答案 0 :(得分:1)
通过执行以下操作定义变量s
:
STACK s;
初始化:
s = create_stack();
测试初始化是否成功:
if (NULL == s)
{
return EXIT_FAILURE;
}
通过这样调用push()
来使用它:
push(12058010, s);
这一切看起来像这样:
int main(void)
{
STACK s = create_stack(); /* This merges step 1 and 2. */
if (NULL == s)
{
return EXIT_FAILURE;
}
push(12058010, s);
return EXIT_SUCCES;
}
答案 1 :(得分:0)
S
既不在全球范围内,也不在main()
范围内。
我怀疑您打算将STACK S = create_stack();
写为main()
中的第一个语句。
不要忘记free
已分配的内存。