我刚开始用C语言为学校编程。我被要求做一个使用FIFO结构来解决数学问题的程序。我在互联网上获得了一个FIFO的代码,我只是不知道如何使用它。我尝试了很多东西,我在互联网上找不到任何有用的东西,也许我只是不知道正确的研究方法,但你可以帮助我吗?谢谢!
#include <stdio.h>
#include <stdlib.h>
typedef struct pile
{
int donnee;
struct pile *precedent;
} Pile;
void pile_push(Pile **p_pile, int donnee)
{
Pile *p_nouveau = malloc(sizeof *p_nouveau);
if (p_nouveau != NULL)
{
p_nouveau->donnee = donnee;
p_nouveau->precedent = *p_pile;
*p_pile = p_nouveau;
}
}
int pile_pop(Pile **p_pile)
{
int ret = -1;
if (p_pile != NULL)
{
Pile *temporaire = (*p_pile)->precedent;
ret = (*p_pile)->donnee;
free(*p_pile), *p_pile = NULL;
*p_pile = temporaire;
}
return ret;
}
void pile_clear(Pile **p_pile)
{
while (*p_pile != NULL)
{
pile_pop(p_pile);
}
}
我试过这样做:
int main()
{
int return_val;
Pile pile;
pile_push(Pile, 5);
return_val = pile_pop(Pile);
printf(return_val);
}
并收到此错误:
expected expression before 'Pile'
too few arguments to function 'pile_push'
答案 0 :(得分:1)
您混淆了Pile
和pile
这是第一次警告的问题。函数期望指向指向桩的指针。即:它们更新指针的值,因此需要传递对指针的引用。你对printf的使用也是错误的。
int main()
{
int return_val;
Pile *pile = NULL;
pile_push(&pile,5);
return_val = pile_pop(&pile);
printf("return_val is: %d\n",return_val);
}